我正在尝试测试我的项目,我遇到以下错误:
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(显示cannot resolve symbol 'libcore'
)。同样适用于库dalvik.system.VMStack
(显示cannot resolve symbol 'VMStack'
)。
答案 0 :(得分:4)
我遇到了同样的问题,结果证明这是我在Android Studio中设置的结果。本质上Android Studio默认(或者我在某些时候设置的东西?)是在Java JUnit而不是Android JUnit中运行我的测试。
要检查此问题,请转到顶部栏并查找"运行"下拉菜单,然后点击"编辑配置"。您应该看到"运行/调试配置"窗口弹出。
在最左边的窗格中,应该只有" Android应用程序"," Android测试"和"默认"部分。如果任何文件都在" JUnit"文件夹而不是" Android测试"文件夹,您的测试可能无法正常运行。要解决此问题,请选择左上角的加号,然后选择" Android Tests"。此操作允许您将新的运行配置创建为Android测试。在顶部输入您更改运行配置的文件/文件的任何重要信息。例如,如果" TestDB"最初是在" JUnit",制作新的Android测试配置,选择" Class"单选按钮,并在新文本栏中找到相应的类。您还可以在应用程序中使用"全部"或"所有包装"为整个测试集创建设置。
选择" JUnit"下的所有内容非常重要。然后单击顶部的减号按钮以删除这些运行配置。同样重要的是:如果您有机会选择运行配置(即如果您右键单击文件/包,请按"运行,"并显示多个运行选项),请确保始终选择一个带有Android符号!
答案 1 :(得分:0)
您似乎忘记导入结果打印机。
import junit.textui.ResultPrinter
答案 2 :(得分:0)
我能用Android Studio解决这个问题。我按照http://tools.android.com/tech-docs/unit-testing-support中的说明操作。确保使用AS中的Rename重构选项将/ src // ...的测试源代码重命名为/ src / test / ...
最后包含“Method ... not mocked”的片段。遇到错误。
答案 3 :(得分:0)
我遇到了同样的问题,但是解决了! JUnit测试框架提供以下重要功能:
我成功使用了除创建测试运行程序类以外的所有功能,如下所示(每次运行时都会出错。)
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是您的测试类,如下所示:
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选项下->选择每个项目,然后单击减号。
此链接涵盖有关JUnit类的教程:https://www.tutorialspoint.com/junit/junit_test_framework.htm
注意:在每次更改ExampleUnitTest类之后,首先右键单击ExampleUnitTest.class并运行它,然后运行TestRunner。
祝你好运!