当前位置: 首页 > 知识库问答 >
问题:

QAF Cucumber with TestNG正在抛出类not found异常

方博
2023-03-14

我正在学习java。使用Testng运行qaf cucumber时出现lang.NoClassDefFoundError异常。尝试使用Maven和TestNG以相同的错误运行。不确定我做错了什么。这是我的源代码和文件夹结构

TestNG XML:

<suite name="TestNG - Cucumber" verbose="0">
    <test name="Gherkin-QAF-Test">
        <parameter name="step.provider.pkg" value="src/test/java" />
        <parameter name="scenario.file.loc" value="Scenarios" />
        <classes>
            <class name="com.qmetry.qaf.automation.step.client.gherkin.GherkinScenarioFactory" />
        </classes>
    </test>
</suite>

特征文件:

Feature: Test for QAF

  Scenario: success
    Given my scenario works

POM文件:

<dependencies>


  <dependency>
    <groupId>com.qmetry</groupId>
    <artifactId>qaf</artifactId>
    <version>2.1.15</version>
 </dependency>

 <dependency>
    <groupId>com.qmetry</groupId>
    <artifactId>qaf-cucumber</artifactId>
    <version>2.1.15</version>
 </dependency>


   <dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.8.1</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>4.8.1</version>
    <exclusions>
         <exclusion>
             <groupId>junit</groupId>  
             <artifactId>junit</artifactId>  
         </exclusion>
    </exclusions>

</dependency>

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.1.0</version>
    <scope>test</scope>
</dependency>




  </dependencies>

步骤定义类:

package StepDefinitions;

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

import io.cucumber.java.en.Given;


@QAFTestStepProvider
public class TestSteps {

    @Given("my scenario works")
    public void myScenarioWorks() {
         System.out.println("hello");
    }
}

文件夹结构:

错误:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.160 s
[INFO] Finished at: 2020-03-04T19:03:59+11:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.14.1:test (default-test) on project BRDWCucumberQAF: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.14.1:test failed: There was an error in the forked process
[ERROR] java.lang.NoClassDefFoundError: org/testng/IAnnotationTransformer2
[ERROR]     at java.lang.ClassLoader.defineClass1(Native Method)
[ERROR]     at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
[ERROR]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[ERROR]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
[ERROR]     at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
[ERROR]     at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
[ERROR]     at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
[ERROR]     at java.security.AccessController.doPrivileged(Native Method)
[ERROR]     at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[ERROR]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[ERROR]     at java.lang.Class.forName0(Native Method)
[ERROR]     at java.lang.Class.forName(Class.java:348)
[ERROR]     at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
[ERROR]     at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
[ERROR]     at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
[ERROR]     at org.testng.TestNG.addServiceLoaderListeners(TestNG.java:961)
[ERROR]     at org.testng.TestNG.initializeConfiguration(TestNG.java:898)
[ERROR]     at org.testng.TestNG.initializeEverything(TestNG.java:988)
[ERROR]     at org.testng.TestNG.run(TestNG.java:999)
[ERROR]     at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:178)
[ERROR]     at org.apache.maven.surefire.testng.TestNGXmlTestSuite.execute(TestNGXmlTestSuite.java:92)
[ERROR]     at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:96)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]     at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:208)
[ERROR]     at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:159)
[ERROR]     at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:87)
[ERROR]     at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
[ERROR]     at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:95)
[ERROR] Caused by: java.lang.ClassNotFoundException: org.testng.IAnnotationTransformer2
[ERROR]     at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[ERROR]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
[ERROR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[ERROR]     ... 33 more

这里类似的问题

cucumber-如何配置QAF小cucumber场景工厂?

共有1个答案

云远
2023-03-14

原因是TestNG 7删除了框架使用的iNotationTransformer2。从pom中删除testng dependecy或将其设置为6.10,它应该可以工作。

此外,QAF Cumber支持Cumber 5。如果你想用cucumber4,你可以试试qaf-cucumber4。对于您的情况,您可以设置以下属性以使用cucumber 4中的步骤,而不使用qaf cucumber:

step.annotation.pkgs=io.cucumber.java
 类似资料:
  • 问题内容: 我试图在Netbeans中重构一个大型程序,但我有点迷茫。我从来没有非常模块化,但是现在通过实际学习如何做到这一点来尝试纠正这种情况,并在将来纠正这种情况。不幸的是,我在将某些教程翻译成我的程序时遇到了麻烦。所以我希望这里有人可以帮忙。目前,我正在尝试分解一部分采用特定格式的文件并制成表格的代码。我知道我需要创建一个类并使用它来创建表对象,但是我不确定如何做。我有一个主文件,用于获取文

  • 这是我连接HTTP的代码。 这就是android。操作系统。NetworkOnMainThreadException 请帮忙。

  • 我是jUnit和mockito的新手。对于虚空的嘲弄是如何发挥作用的,我完全感到困惑。在这里,如果名称是“hello”,则函数抛出一个异常。但当我测试它时,它并没有抛出异常... 测试 }

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 问题内容: 我的JSF页面中有p:selectOneMenu,当我运行JSF页面时,我从Converter类收到以下异常。 我该如何解决这个问题? 我在实体类中有以下内容 EmployeeConverter类 并在jsf页面中 更新1 修改的转换器方法 更新2 问题答案: 用您的方法,您无法达到自己的价值。在这里,您将收到,因此您必须将其转换为(可能必须实现使用Service locator 加载

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静