1

遵循此处概述的步骤https ://qmetry.github.io/qaf/qaf-2.1.14/gherkin_client.html

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

添加了功能文件

@Web
Feature: Google Search

@Smoke
Scenario: Search InfoStrech

Given I am on Google Search Page
When I search for "git qmetry"
Then I get at least 5 results
And it should have "QMetry Automation Framework" in search results

在java中添加步骤

@QAFTestStep(description = "I am on Google Search Page")
public void step1() {
    System.out.println("I am on Google Search Page");
}

@QAFTestStep(description = "I search for {0}")
public void iSearchFor(String s) {
    System.out.println("I search for " + s);
}

@QAFTestStep(description="I get at least {num} results")
public void iGet_inSearchResults(Integer n) {
    System.out.printf("I get at least %d results\n", n);
}

@QAFTestStep(description="it should have {0} in search results")
public void itShouldHave_inSearchResults(String s) {
    System.out.printf("it should have %s in search results\n", s);
}

将 xml 文件作为 TestNG 运行,出现以下错误:

工厂方法类 com.qmetry.qaf.automation.step.client.ScenarioFactory.getTestsFromFile() 抛出异常

org.testng.TestNGException: 
The factory method class com.qmetry.qaf.automation.step.client.ScenarioFactory.getTestsFromFile() threw an exception
    at org.testng.internal.FactoryMethod.invoke(FactoryMethod.java:197)
    at org.testng.internal.TestNGClassFinder.processFactory(TestNGClassFinder.java:223)
    at org.testng.internal.TestNGClassFinder.processMethod(TestNGClassFinder.java:179)
    at org.testng.internal.TestNGClassFinder.processClass(TestNGClassFinder.java:171)
    at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:121)
    at org.testng.TestRunner.initMethods(TestRunner.java:370)
    at org.testng.TestRunner.init(TestRunner.java:271)
    at org.testng.TestRunner.init(TestRunner.java:241)
    at org.testng.TestRunner.<init>(TestRunner.java:192)
    at org.testng.remote.support.RemoteTestNG6_12$1.newTestRunner(RemoteTestNG6_12.java:33)
    at org.testng.remote.support.RemoteTestNG6_12$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_12.java:66)
    at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:713)
    at org.testng.SuiteRunner.init(SuiteRunner.java:260)
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:198)
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1295)
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1273)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1128)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.IllegalArgumentException: wrong number of arguments
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.testng.internal.FactoryMethod.invoke(FactoryMethod.java:167)
    ... 21 more
something else I've noticed. After an update to "Scenario" in feature file next to each line of conditions I see warning with text:

Step '********' does not have a matching glue code

4

1 回答 1

0

要回答原始问题,最简单的方法是开始使用maven 模板ANT 模板

关于您在评论中使用 testng 注释的问题,在使用 BDD 时,您可以将该代码移动到相应的 testng 侦听器中。例如,带有 Before/AfterSuite 注解的方法可以移动到 Suite 监听器,而 Before/AfterMethod 可以移动到 Method Invocation 监听器。

当您使用 QAF 时,您可能不需要太多的驱动程序管理代码,因为 qaf 提供了线程安全驱动程序和资源管理的内置功能。您可以通过驱动程序和元素侦听器以及定位器存储库功能来利用它。它是高度可配置的,例如您可以设置 属性 selenium.singletone来指定驱动程序实例范围。可能的值可以是 Tests (testng xml test) 或 Methods (test mtehod) 或 Groups。

于 2020-02-14T01:41:52.057 回答