JUnit - Android Studio - NoClassDefFoundError 异常
JUnit - Android Studio - NoClassDefFoundError Exception
我正在尝试测试我的项目,但出现以下错误:
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 (without 6-7 steps which I didn't understand) and here 中提到的 JUnit。但是还是有同样的问题。
在异常挖掘时,发现有些文件正在使用无法找到的库libcore(显示cannot resolve symbol 'libcore'
)。图书馆dalvik.system.VMStack
也是如此(显示cannot resolve symbol 'VMStack'
)。
您好像忘记导入结果打印机了。
import junit.textui.ResultPrinter
我能够使用 Android Studio 解决这个问题。我按照 http://tools.android.com/tech-docs/unit-testing-support 中的说明进行操作。确保使用 AS.
中的重命名重构选项将测试源代码所在的 /src//... 重命名为 /src/test/...
如果遇到 "Method ... not mocked." 错误,最后包括代码段。
我遇到了同样的问题,结果证明这是我在 Android Studio 中设置的结果。本质上,Android Studio 默认设置(或者可能是我在某个时候设置的?)是 运行 在 Java JUnit 中而不是 Android JUnit 中测试我的测试。
要检查此问题,请转到顶部栏并查找 "Run" 下拉菜单,然后尝试单击 "Edit Configurations"。您应该会看到 "Run/Debug Configurations" window 弹出窗口。
在最左边的窗格中,应该只有 "Android Application"、"Android Tests" 和 "Defaults" 部分。如果任何文件在 "JUnit" 文件夹中而不是 "Android Tests" 文件夹中,您的测试可能不会 运行 正确。要修复它,select 左上角的加号和 select "Android Tests"。此操作允许您创建一个新的 运行 配置作为 Android 测试。在顶部为 file/files 更改 运行 配置输入任何重要信息。例如,如果 "TestDB" 最初在 "JUnit" 下,请创建一个新的 Android 测试配置,select "Class" 单选按钮,然后找到合适的 class 在新的文本栏中。您还可以使用 "all in app" 或 "all in package" 为整个测试集创建设置。
select "JUnit" 下的所有内容非常重要,然后单击顶部的减号按钮删除那些 运行 配置。同样重要的是:如果您有机会选择 运行 配置(即,如果您右键单击 file/package,按 "run,",然后会出现几个 运行 选项),使确保您总是选择带有 Android 符号的那个!
我遇到了同样的问题,但是已经解决了!
JUnit 测试框架提供以下重要功能:
- 赛程
- 测试套件
- 测试运行人
- JUnit 类
我成功地使用了除 CREATING TEST RUNNER CLASS 以外的所有功能,如下所示(我每次 运行 都会出错。)
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
TestJunit.class 是你的测试 Class,如下所示:
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
@Test
public void testAdd() {
String str = "Junit is working fine";
assertEquals("Junit is working fine", str);
}
}
最后,解决方案:
转到菜单 运行 --> 编辑配置 --> 左面板 --> 在 Android JUnit 选项下 --> Select 每个项目并单击减号。
此 Link 涵盖有关 JUnit Class 的教程:https://www.tutorialspoint.com/junit/junit_test_framework.htm
注意:在 EVERY ExampleUnitTest Class 更改后,首先右键单击 ExampleUnitTest.class 和 运行 然后 运行测试运行ner.
祝你好运!
我正在尝试测试我的项目,但出现以下错误:
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 (without 6-7 steps which I didn't understand) and here 中提到的 JUnit。但是还是有同样的问题。
在异常挖掘时,发现有些文件正在使用无法找到的库libcore(显示cannot resolve symbol 'libcore'
)。图书馆dalvik.system.VMStack
也是如此(显示cannot resolve symbol 'VMStack'
)。
您好像忘记导入结果打印机了。
import junit.textui.ResultPrinter
我能够使用 Android Studio 解决这个问题。我按照 http://tools.android.com/tech-docs/unit-testing-support 中的说明进行操作。确保使用 AS.
中的重命名重构选项将测试源代码所在的 /src//... 重命名为 /src/test/...如果遇到 "Method ... not mocked." 错误,最后包括代码段。
我遇到了同样的问题,结果证明这是我在 Android Studio 中设置的结果。本质上,Android Studio 默认设置(或者可能是我在某个时候设置的?)是 运行 在 Java JUnit 中而不是 Android JUnit 中测试我的测试。
要检查此问题,请转到顶部栏并查找 "Run" 下拉菜单,然后尝试单击 "Edit Configurations"。您应该会看到 "Run/Debug Configurations" window 弹出窗口。
在最左边的窗格中,应该只有 "Android Application"、"Android Tests" 和 "Defaults" 部分。如果任何文件在 "JUnit" 文件夹中而不是 "Android Tests" 文件夹中,您的测试可能不会 运行 正确。要修复它,select 左上角的加号和 select "Android Tests"。此操作允许您创建一个新的 运行 配置作为 Android 测试。在顶部为 file/files 更改 运行 配置输入任何重要信息。例如,如果 "TestDB" 最初在 "JUnit" 下,请创建一个新的 Android 测试配置,select "Class" 单选按钮,然后找到合适的 class 在新的文本栏中。您还可以使用 "all in app" 或 "all in package" 为整个测试集创建设置。
select "JUnit" 下的所有内容非常重要,然后单击顶部的减号按钮删除那些 运行 配置。同样重要的是:如果您有机会选择 运行 配置(即,如果您右键单击 file/package,按 "run,",然后会出现几个 运行 选项),使确保您总是选择带有 Android 符号的那个!
我遇到了同样的问题,但是已经解决了! JUnit 测试框架提供以下重要功能:
- 赛程
- 测试套件
- 测试运行人
- JUnit 类
我成功地使用了除 CREATING TEST RUNNER CLASS 以外的所有功能,如下所示(我每次 运行 都会出错。)
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
TestJunit.class 是你的测试 Class,如下所示:
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
@Test
public void testAdd() {
String str = "Junit is working fine";
assertEquals("Junit is working fine", str);
}
}
最后,解决方案: 转到菜单 运行 --> 编辑配置 --> 左面板 --> 在 Android JUnit 选项下 --> Select 每个项目并单击减号。
此 Link 涵盖有关 JUnit Class 的教程:https://www.tutorialspoint.com/junit/junit_test_framework.htm
注意:在 EVERY ExampleUnitTest Class 更改后,首先右键单击 ExampleUnitTest.class 和 运行 然后 运行测试运行ner.
祝你好运!