java.lang.NoClassDefFoundError:android和junit测试

g52tjvyc  于 2023-10-20  发布在  Java
关注(0)|答案(5)|浏览(171)

我发现我不是唯一一个有这个问题的人,但我找不到正确的答案。我有一个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
flseospp

flseospp1#

不知道我是否有和你一样的问题,但我正在使用gradle,由于某种原因,测试只是不会再运行,与你有同样的错误。我试着清理和重建,但无济于事。经过几个小时的沮丧和试图找到答案,我在GitHub线程中找到了简单的解决方案:
我通过删除项目中的.gradle文件夹并重建项目来解决此问题。
(感谢Vpetrov)

m0rkklqb

m0rkklqb2#

您可以在终端中运行./gradlew clean test

plicqrtu

plicqrtu3#

通过以下步骤修复了该问题--
1.打开模块级别的build.gradle文件,转到依赖项,转到这一行--

testImplementation 'junit:junit:4.12'

2.将junit版本更改为低于它的任何版本(如4.10)

testImplementation 'junit:junit:4.10'

3.同步项目
4.在我的案例中,这个问题在这一点上得到了解决
5.如果需要,可以将junit版本设置回以前的版本(在我的例子中是4.12)

testImplementation 'junit:junit:4.12'

6.同步项目
在我的情况下,更改junit版本和同步项目是有效的。

3yhwsihp

3yhwsihp4#

Robolectric 4.4版似乎不支持jdk 14。所以我可以切换到jdk 13或更新robolectric到4.5-alpha-1

4c8rllxm

4c8rllxm5#

在我自己的情况下,我不得不从org.jetbrains.kotlinx:kotlinx-coroutines-test:1.73更改为org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.4

相关问题