java - JUnit - Android Studio - NoClassDefFoundError 异常

标签 java android android-studio junit

我正在尝试测试我的项目,但遇到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter
    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)

我尝试按照 here 中提到的方式安装 JUnit (没有我不明白的6-7个步骤)和here 。但仍然遇到同样的问题。

在挖掘异常时,我发现某些文件正在使用无法找到的libcore库(显示无法解析符号'libcore')。对于库 dalvik.system.VMStack 也是如此(显示无法解析符号“VMStack”)。

最佳答案

我也遇到了同样的问题,结果是我在 Android Studio 中的设置导致的。本质上,Android Studio 默认设置(或者可能是我在某个时刻设置的东西?)是在 Java JUnit 而不是 Android JUnit 中运行我的测试。

要检查此问题,请转到顶部栏并查找“运行”下拉列表,然后尝试单击“编辑配置”。您应该会看到弹出“运行/调试配置”窗口。

在最左侧的 Pane 中,应该只有“Android 应用程序”、“Android 测试”和“默认值”部分。如果任何文件位于“JUnit”文件夹中而不是“Android Tests”文件夹中,则您的测试可能无法正常运行。要修复此问题,请选择左上角的加号,然后选择“Android 测试”。此操作允许您创建新的运行配置作为 Android 测试。在顶部输入您更改运行配置的文件的任何重要信息。例如,如果“TestDB”最初位于“JUnit”下,请进行新的 Android 测试配置,选择“Class”单选按钮,然后在新文本栏中找到适当的类。您还可以使用“all in app”或“all in package”为整个测试集创 build 置。

选择“JUnit”下的所有内容并单击顶部的减号按钮删除这些运行配置非常重要。同样重要的是:如果您有机会选择运行配置(即,如果您右键单击文件/包,按“运行”,然后会显示多个运行选项),请确保您始终选择带有 Android 符号的配置!

关于java - JUnit - Android Studio - NoClassDefFoundError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30969204/

相关文章:

java - 关于 ActionEvents、监听器和计时器

android - 以编程方式启用模拟位置

android - 如何使 AndroidX 成为新 Android 项目的默认库?

java - SonarQube 无法分析文件 : Java file

java - 为什么在我的查询中添加 Where 子句时没有得到结果?

javascript - JSP : using java variable in Javascript

java - 我如何将 Android XML 布局转换为 Java 类?

java - 无此类方法异常按钮错误(XML onClick)

javascript - 是否可以在 Kitkat 中的 android webview 中使用 html5 语音 API?

java - 尽管声明了字符串,但 OnClickListener 错误 : "[..] invoke virtual method [...] on a null object reference",