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 测试创建自己的配置并根据需要将它们包含到您的测试文件夹中。
我是 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 测试创建自己的配置并根据需要将它们包含到您的测试文件夹中。