Getting cucumberException in thread main java.lang.NoClassDefFoundError: org/testng/ITestContext while running cucumber task

Getting cucumberException in thread main java.lang.NoClassDefFoundError: org/testng/ITestContext while running cucumber task

我是 cucumber-jvm 的新手。 运行 黄瓜任务时出现此错误。

:cucumberException in thread "main" java.lang.NoClassDefFoundError: org/testng/ITestContext at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetPublicMethods(Class.java:2902) at java.lang.Class.getMethods(Class.java:1615) at cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40) at cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86) at cucumber.runtime.Runtime.<init>(Runtime.java:91) at cucumber.runtime.Runtime.<init>(Runtime.java:69) at cucumber.runtime.Runtime.<init>(Runtime.java:65) at cucumber.api.cli.Main.run(Main.java:35) at cucumber.api.cli.Main.main(Main.java:18) Caused by: java.lang.ClassNotFoundException: org.testng.ITestContext at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 11 more 我无法找到为什么会出现此错误。任何形式的帮助将不胜感激。提前致谢。

build.gradle 文件:

apply plugin: 'java'
apply plugin: 'eclipse'

repositories {
    mavenCentral()
}

configurations {
    cucumberRuntime {
        extendsFrom testRuntime
    }
}

 task cucumber() {
     dependsOn assemble, compileTestJava
      doLast {
          javaexec {
              main = "cucumber.api.cli.Main"
              classpath = configurations.cucumberRuntime +   sourceSets.main.output     + sourceSets.test.output
              args = ['--plugin', 'pretty', '--glue', 'com', 'src/test/resources']
         }
     }
}

dependencies {
    compile 'junit:junit:4.11'
    compile 'info.cukes:cucumber-java:1.2.4'
    compile 'info.cukes:cucumber-junit:1.2.4'
    compile 'org.seleniumhq.selenium:selenium-java:2.53.1'
}

基本思路是不要手动调用 cucumber cli。这将由您选择的测试框架(在您的情况下为 junit)处理。所以摆脱黄瓜的特殊任务。这应由默认的 gradle 测试任务处理。请在此处查看初始设置:https://github.com/tobi-sh/test-gradle-cucumber.

如果您真的想将 bdd 测试与其他单元测试分开,而不是为 bdd 测试创建自己的配置并根据需要将它们包含到您的测试文件夹中。