如何防止Android gradle构建作为单元测试运行设备测试

时间:2015-03-31 12:28:54

标签: android android-gradle

我正在将Android项目loopback-sdk-android从Android Gradle Build Tools 0.9升级到1.1。就IDE而言,迁移很顺利,我可以编译项目并在模拟器上运行设备测试。

但是,命令行构建已损坏。当我运行./gradlew build(或./gradlew test)时,构建工具错误地从src/androidTest/java中选取文件作为单元测试文件,并且构建失败并带有一堆NoClassDefFoundError。

com.strongloop.android.loopback.test.AsyncTestCase > initializationError FAILED
    java.lang.NoClassDefFoundError
        Caused by: java.lang.ClassNotFoundException

./gradlew connectedAndroidTest正常工作,并在模拟器上运行src/androidTest/java的测试。

如何配置gradle构建以使其不会将设备测试作为纯单元测试运行?

2 个答案:

答案 0 :(得分:0)

解决方案:升级构建文件后删除旧的构建工件。

./gradlew clean

对于后人,这是一个简短的片段,向我确认构建正确地获取源文件:

android {
    sourceSets {
        logger.info("androidTest java srcdirs");
        androidTest.java.srcDirs.each { d -> logger.info("\t" + d) }

        logger.info("test java srcdirs");
        test.java.srcDirs.each { d -> logger.info("\t" + d) }
    }
}

./gradlew --info test产生了以下结果:

androidTest java srcdirs
    ~/src/loopback/android/src/androidTest/java
test java srcdirs
    ~/src/loopback/android/src/test/java

答案 1 :(得分:0)

打开文件build.gradle(Module:app)

评论您在android中的测试编译{}

// testInstrumentationRunner“ android.support.test.runner.AndroidJUnitRunner”