【问题标题】:java.lang.NoClassDefFoundError: org/testng/IAnnotationTransformer2java.lang.NoClassDefFoundError: org/testng/IAnnotationTransformer2
【发布时间】:2022-02-03 16:08:18
【问题描述】:

为 QAFTestSteps 运行 testng 配置时出现以下错误:

显示错误

[RemoteTestNG] detected TestNG version 7.5.0
log4j:WARN No such property [follow] in org.apache.log4j.FileAppender.
java.lang.NoClassDefFoundError: org/testng/IAnnotationTransformer2
        at java.base/java.lang.ClassLoader.defineClass1(Native Method)
        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1010)
        at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
        at 
java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:855)

步骤定义

import java.util.List;


import com.qmetry.qaf.automation.step.QAFTestStep;

public class GoogleSearchSteps {
   
   
            @QAFTestStep(description = "user is on google Web Page")
            public void step1() {
                    System.out.println("I am on Google Search Page");

            }

            @QAFTestStep(description = "user enters text {strText} in google search box")
            public void iSearchFor(String strText) {
                    System.out.println("I search for " + strText);

            }

            @QAFTestStep(description="click on Google Search button")
            public void clickOnGoogleSearchButton(List<String> s) {
                    System.out.printf("List: %s\n", s);

            }
           
            @QAFTestStep(description="search result page should generate")
            public void searcgResultsShouldPopulate(List<String> s) {
                    System.out.printf("List: %s\n", s);

            }
        

}

功能文件

Feature: Text box validation

Scenario: Validate google search text box

   Given user is on google Web Page
   When user enters text 'DNA' in google search box
   And click on Google Search button
   Then search result page should generate

测试执行的Testng配置

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="QAF Demo" verbose="0">
<test name="Gherkin-QAF-Test">
   <parameter name="step.provider.pkg" value="com.qmetry.qaf.automation.impl.step.qaf;" />
   <parameter name="scenario.file.loc" value="scenarios/searchtext.feature" />
   <classes>
      <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
   </classes>
</test>
</suite>

【问题讨论】:

    标签: java selenium testng bdd qaf


    【解决方案1】:

    看起来像是版本兼容性问题。使用最新版本的 qaf 3.1.0-RC2 和 testng 7.4.0

    更新版本将修复上述错误,但您仍会看到与步骤相关的问题。原因如下:

    @QAFTestStep(description="click on Google Search button") //missing argument placeholder 
       public void clickOnGoogleSearchButton(List<String> s) {
          System.out.printf("List: %s\n", s);
       }
               
    @QAFTestStep(description="search result page should generate")//missing argument placeholder
       public void searcgResultsShouldPopulate(List<String> s) {
          System.out.printf("List: %s\n", s);
       }
    

    如果您的步骤(方法)有参数,步骤描述需要有参数占位符,并且这些参数需要在调用步骤的地方传递。请看下面的例子:

    @QAFTestStep(description="click on Google Search button")
       public void clickOnGoogleSearchButton() {
          System.out.printf("clickOnGoogleSearchButton");
       }
               
    @QAFTestStep(description="search result page should generate {results}")
       public void searcgResultsShouldPopulate(List<String> s) {
          System.out.printf("List: %s\n", s);
       }
    

    功能文件:

    Feature: Text box validation
    
    Scenario: Validate google search text box
    
       Given user is on google Web Page
       When user enters text 'DNA' in google search box
       And click on Google Search button
       Then search result page should generate ["a","b","c"]
    

    【讨论】:

    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多