线程"main"中的异常java.lang.NoClassDefFoundError:junit/textui/ResultPrinter

Jan*_*nen 62 java junit android android-studio

我正在尝试在Android Studio 0.3.0中编译我的Android项目.今天我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:188)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:113)
Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
... 3 more

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

做一些网络搜索让我相信这个问题与JUnit有某种关系.但是,我没有在我的项目中使用JUnit.也许我无意中打开了一些选项?在这种情况下,如何在项目中禁用单元测试?有任何想法吗?

Jan*_*nen 57

终于找到了.它位于"运行/调试配置"对话框中.禁用JUnit并再次编译.

  • 为什么不能将TestSuite作为常规JUnit测试用例运行? (13认同)
  • 我在Android Studio 0.4.2上遇到了同样的问题.我实际上尝试将测试作为常规JUnit测试用例而不是Android测试用例运行. (10认同)
  • @IgorGanapolsky作为JUnit测试而不是Android测试运行意味着它将在主机系统而不是设备上运行.作为android测试运行将测试apk部署到设备并在那里运行(在dalvik vm下).很久以前我有Eclipse设置,所以我可以对Android项目中的代码运行JUnit测试; 但是,它只适用于没有使用任何Android类(Activity,View,Intent等)的类.如果包含任何内容,则有一个存根实现来支持对签名进行编译,但是在运行时,它会抛出一个RuntimeException:"Stub!" (2认同)

rad*_*tao 27

通常这个问题是由于错误的测试类型引起的:Junit而不是Android Test 选择Android测试而不是JUnit 选择Android测试而不是JUnit


pow*_*366 8

对于标准的JUnit测试,您缺少JUnit库,请尝试在build.gradle中添加它:

dependencies {
    ...
    testCompile 'junit:junit:4.12'
    ...
}
Run Code Online (Sandbox Code Playgroud)

并确保您将测试放在"test"目录中与"main"包平行(仪器测试进入"androidTest",但这是不同的设置).


Pne*_*nic 6

通过菜单强制项目"同步":工具> Android>使用Gradle文件同步项目或通过在build.gradle文件中进行虚假更改来强制项目"同步"(添加空格然后删除它然后单击"同步"现在").