java.lang.NoClassDefFoundError:android and junit t

2019-07-17 23:24发布

我看到,我不是有这个问题只有一个,但我没有找到一个正确的答案。 我有我想要测试的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需要一个对象上下文,所以我创建一个模拟(带的Mockito)。 我有对象MockContext尝试过,但它不能正常工作。

这是我的Java构建路径:

  • 的Mockito-ALL-1.9.5.jar
  • Android 2.1系统 - >的android.jar
  • Android的依赖关系 - > annotations.jar
  • Junit的3 - >的junit.jar

Answer 1:

不知道如果我有同样的问题,因为你,但我使用gradle这个出于某种原因,测试只是不会了,因为你已经用完,用同样的错误。 我试图清理和重建,但无济于事。 经过挫折并试图找到我碰到一个GitHub的线程简单的解决方案来回答的时间:

我通过我的项目去掉.gradle文件夹并重建项目解决了这个问题。

(感谢vpetrov)



Answer 2:

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



Answer 3:

按照以下步骤解决了该问题 -

1.Open模块级的build.gradle文件,去依赖,走这条线 -

testImplementation 'junit:junit:4.12'

2.Change JUnit版本它下面什么都重要(如4.10)

testImplementation 'junit:junit:4.10'

3.Sync项目

4,发行固定在我的情况下,这一点

5.设置JUnit版本回到它以前(在我的情况下,4.12),如果你想

testImplementation 'junit:junit:4.12'

6.Sync项目

更改JUnit版本和同步工程在我的情况下工作。



文章来源: java.lang.NoClassDefFoundError:android and junit test