使用Android Studio进行测试:NoClassDefFoundError:org / testng / TestNG

时间:2016-05-19 09:30:40

标签: java android unit-testing android-studio

所以我试图使用内置的testTool为我的mainActivity生成一些测试,到目前为止我已经设法生成了一个测试类,并且我在其中有空方法来测试mainActivity的方法。如果我运行带覆盖的testClass,我会收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/TestNG
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    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)
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:117)
    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:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.ClassNotFoundException: org.testng.TestNG
    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)
    ... 18 more

我不确定这是什么意思,有一个类没有定义?

我可能还补充一点,我补充说:

    task testClasses {
    doLast {
        println 'This is a dummy testClasses task'
    }
}

在我的sqlite模块的build.gradle文件中,否则我根本无法运行任何测试。

我也可以在“模块设置”下的“依赖关系”选项卡下添加,我确实有" org.testng:testnb:6.9.6"设置为"测试编译"。

这是我的依赖项在我的gradle文件中的显示方式:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    androidTestCompile 'org.testng:testng:6.9.6'
    compile project(':sqlite-jdbc-3.8.11.2')
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.getbase:floatingactionbutton:1.10.1'
    compile 'com.android.support:design:23.3.0'
    compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
    compile 'com.android.support:support-v4:23.3.0'
    compile 'com.numetriclabz.numandroidcharts:numandroidcharts:1.0.13'
}
编辑:我看到Android工作室也创建了一个ExampleUnitTest文件,如果我将我的测试用例添加到这个文件并运行它们,它就可以了。当我尝试运行整个MainActivityTest类时,问题似乎只会发生,但单个方法似乎可以测试。

2 个答案:

答案 0 :(得分:1)

检查您的模块结构。可能你的一个高级模块文件夹没有依赖项。 (您可以将模块链接在一起,一切都可以工作)。

转到 - > File|Project structure|Modules|*your module*|Dependencies。 它不是TestNG问题,它是模块结构问题。

更详细的说明点击这 - > Link

答案 1 :(得分:0)

尝试更改

testCompile 'junit:junit:4.12'

androidTestCompile 'junit:junit:4.12'

另外,请确保将其作为Android测试运行。