Cucumber 黄瓜-如何配置QAF小黄瓜场景工厂?

Cucumber 黄瓜-如何配置QAF小黄瓜场景工厂?,cucumber,gherkin,cucumber-java,cucumber-junit,qaf,Cucumber,Gherkin,Cucumber Java,Cucumber Junit,Qaf,由于JUnit,我有一个Cucumber项目正在运行,课程如下: @RunWith(Cucumber.class) @黄瓜选项( features=“src/test/resources/features”, glue=“com.steps”, plugin={“pretty”,“json:target/cucumber report/cucumber.json”}) 公开课{ } 我想使用,以便在外部文件中放置一些场景示例,以便重用它们(例如:or) 我阅读了最后一节“For Existin

由于JUnit,我有一个Cucumber项目正在运行,课程如下:

@RunWith(Cucumber.class)
@黄瓜选项(
features=“src/test/resources/features”,
glue=“com.steps”,
plugin={“pretty”,“json:target/cucumber report/cucumber.json”})
公开课{
}
我想使用,以便在外部文件中放置一些场景示例,以便重用它们(例如:or)

我阅读了最后一节“For Existing cucumber implementation”,并照它所说的做了,但我目前在使用QAF运行cumber时遇到了一个异常(请参见下面的编辑部分)

Java:1.8

黄瓜:4.8.0

Junit:4.12


src/test/resources/features/test.feature

Feature: Test for QAF

  Scenario: success
    Given my scenario works
src/test/java/com/steps/TestSteps.java

@QAFTestStepProvider
公共类测试步骤{
@给定(“我的场景有效”)
公共空间myScenarioWorks(){
资产真实(真实);
}
}

编辑:基于用户861594帮助,我的位置如下:

  • 我通过maven配置下载了这个库

com.qmetry
qaf
2.1.15
  • 我用@QAFTestStepProvider注释了我的step类

  • 我为testNG创建了一个xml配置文件,以便配置cucumber并使用名为GherkinScenarioFactory的QAF类运行它:


  • 我使用IntelliJ IDEA的testNG插件运行了前面的配置(test kind=suite。我还可以选择类、方法、组、模式或包中的全部)

  • 运行时,我得到以下异常(在测试之前,因此它被忽略):

概述异常发生的时间和地点:

//TestNG SuiteRunner#开始运行
//最终,我们到达QAFTestBase,在那里发生了第一个NullPointerException
公共列表getLog(){
return(List)getContext().getObject(COMMAND_LOG);//NullPointerException.getContext()正常,但getContext().getObject(检查点)返回null
}
//QAFTestNGListener#调用OnConfiguration Failure
//最终,我们再次到达QAFTestBase,在那里发生了第二个NullPointerException
公共列表getCheckPointResults(){
return(List)getContext().getObject(检查点);//NullPointerException.getContext()正常,但getContext().getObject(检查点)返回null
}

这篇文章不应该用cucumberjs发表。据我所见,这是Java?

创建XML配置文件以运行您的功能:

<test name="Gherkin-QAF-Test">
   <parameter name="step.provider.pkg" value="pkg.to.look.for.steps" />
   <parameter name="scenario.file.loc" value="resources/features" />
   <classes>
      <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
   </classes>
</test>

有关详细信息,请参阅文档。将其作为TestNG test运行

您有哪一版本的cucumber步骤实现? 如果是cucumber 5+添加依赖项。您可以在中找到最新的依赖项。同时使用(从今天起QAF 2.1.15)

编辑:

黄瓜4: Cucumber 4用户可以使用并继续使用Cucumber,因为它具有其他功能。它将允许您使用外部测试数据,参数化步骤参数以及元数据规则和元数据格式。以下是步骤:

  • 添加依赖项。使suer将依赖关系置于 其他cucumner依赖项
  • 添加QAFCumberPlugin(参见下面的junit示例)
  • 然后,你可以使用的功能是超级小黄瓜集

    @RunWith(Cucumber.class)
    @CucumberOptions(plugin = {"com.qmetry.qaf.automation.cucumber.QAFCucumberPlugin"}, <other options>)//
    public class RunCucumberTest {
    }
    
    @RunWith(Cucumber.class)
    @CucumberOptions(插件={“com.qmetry.qaf.automation.cucumber.qafcumberPlugin”},)//
    公共类运行测试{
    }
    
    黄瓜5:
  • 添加依赖项。使原告将依赖关系置于优先地位 其他cucumner依赖项
  • 要使用cucumner runner运行,请添加QAFCumberPlugin(参见上面的junit示例)
  • 要使用TestNG运行,请将QAF BDD2工厂与TestNG一起使用
  • 下面是示例TestNG配置文件

    <test name="Gherkin-QAF-Test">
       <parameter name="step.provider.pkg" value="pkg.to.look.for.steps" />
       <parameter name="scenario.file.loc" value="resources/features" />
       <classes>
          <class name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory2" />
       </classes>
    </test>
    
    
    

    注意:qaf-cucumber4不支持使用bdd factory与testng一起运行。

    结果表明,异常是由于以下依赖关系造成的,这与qaf无关,因为它只是一个以html格式生成cucumber报告的插件:

    
    网络智囊团
    黄瓜报道
    4.10.0
    
    如果您使用qaf对cucumber运行testng,那么在您的日志中有“includegroups[]”表明您没有包含测试用例。 因此,您应该在testng xml中添加测试用例,如下所示:

    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="TestNG - Cucumber" verbose="0">
        <test name="Gherkin-QAF-Test">
            <parameter name="step.provider.pkg" value="com.steps" />
            <parameter name="scenario.file.loc" value="src/test/resources/features/test.feature" />
            <groups>
                <run>
                    <include name="@test"/>
                </run>
            </groups>
            <classes>
                <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
            </classes>
        </test>
    </suite>
    

    我不明白你的问题,你能重新表述吗?@Flyout91你给黄瓜加了标签。这看起来与javascript无关,谢谢。当我想要选择cucumber jvm时,我太快了。我正在试图弄清楚如何将其作为TestNG运行,谢谢。我正在使用cucumber的上一个稳定版本,so 4.8.0。我现在使用捆绑的IntelliJ IDEA TestNG插件来运行您提到的XML配置(尽管我必须将其内容包装在标记中)。尽管如此,我在setupSuit阶段有一个NullPointerException,因此测试没有运行:com.qmetry.qaf.automation.testng.pro.QAFTestNGListener.report(QAFTestNGListener.java:234)您认为我遗漏了什么吗?或者可能是因为IntelliJ IDEA TestNG插件的缘故?您能提供异常详细信息吗?它阻塞了吗?另外,如果您可以提供有关步骤实现外观的一些详细信息,这将是一件好事。另一种选择是,您可以升级到cucumber 5.0.0RC1并使用JUnit运行。是的。我用我能想到的所有有用的信息更新了我原来的帖子。参考更新的评论。您可以将cucumber runner与所有现有cucumber实现一起使用
    <test name="Gherkin-QAF-Test">
       <parameter name="step.provider.pkg" value="pkg.to.look.for.steps" />
       <parameter name="scenario.file.loc" value="resources/features" />
       <classes>
          <class name="com.qmetry.qaf.automation.step.client.text.BDDTestFactory2" />
       </classes>
    </test>
    
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="TestNG - Cucumber" verbose="0">
        <test name="Gherkin-QAF-Test">
            <parameter name="step.provider.pkg" value="com.steps" />
            <parameter name="scenario.file.loc" value="src/test/resources/features/test.feature" />
            <groups>
                <run>
                    <include name="@test"/>
                </run>
            </groups>
            <classes>
                <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
            </classes>
        </test>
    </suite>
    
    Feature: Test for QAF
      @test
      Scenario: success
        Given my scenario works