我发现我不是唯一一个有这个问题的人,但我找不到正确的答案。我有一个Android项目,我想测试。我为项目的每个类创建一个junit测试类。我的问题是,当我运行我的测试,我有以下错误:
java.lang.NoClassDefFoundError: android/content/Context
这是我的班级考试:
public class DevicesBDDTest extends TestCase {
DevicesBDD bdd;
/**
* @throws java.lang.Exception
*/
protected static void setUpBeforeClass() throws Exception {
}
/**
* @throws java.lang.Exception
*/
protected static void tearDownAfterClass() throws Exception {
}
protected void setUp() throws Exception {
super.setUp();
Context ctx = mock(Context.class);
final MaBaseSQLiteInterface mockMaBaseSQLite = mock(MaBaseSQLiteInterface.class);
bdd = new DevicesBDD(ctx){
@Override
public MaBaseSQLiteInterface createMaBaseSQlite(Context context) {
return mockMaBaseSQLite;
}
};
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void test() {
assertEquals(1, 1);
}
}
我的类DevicesBDD需要一个对象Context,因此我创建了一个mock(使用mockito)。我也尝试了一个对象MockContext,但它不起作用。
这是我的Java构建路径:
- mockito-all-1.9.5.jar
- Android 2.1 -> android.jar
- Android应用-> annotations.jar
- Junit 3 -> junit.jar
5条答案
按热度按时间flseospp1#
不知道我是否有和你一样的问题,但我正在使用gradle,由于某种原因,测试只是不会再运行,与你有同样的错误。我试着清理和重建,但无济于事。经过几个小时的沮丧和试图找到答案,我在GitHub线程中找到了简单的解决方案:
我通过删除项目中的.gradle文件夹并重建项目来解决此问题。
(感谢Vpetrov)
m0rkklqb2#
您可以在终端中运行
./gradlew clean test
。plicqrtu3#
通过以下步骤修复了该问题--
1.打开模块级别的build.gradle文件,转到依赖项,转到这一行--
2.将junit版本更改为低于它的任何版本(如4.10)
3.同步项目
4.在我的案例中,这个问题在这一点上得到了解决
5.如果需要,可以将junit版本设置回以前的版本(在我的例子中是4.12)
6.同步项目
在我的情况下,更改junit版本和同步项目是有效的。
3yhwsihp4#
Robolectric 4.4版似乎不支持jdk 14。所以我可以切换到jdk 13或更新robolectric到
4.5-alpha-1
4c8rllxm5#
在我自己的情况下,我不得不从
org.jetbrains.kotlinx:kotlinx-coroutines-test:1.73
更改为org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4