Android检测测试和库项目

时间:2016-02-20 09:30:31

标签: android android-studio android-gradle android-testing

我有一个图书馆项目和一些主要项目,这取决于该图书馆项目。

我想为主项目编写测试,但测试常用函数应放在库项目中以减少代码重复。

我在库build.gradle中添加了以下几行:

dependencies {
    compile Dependencies.appCompat
    compile Dependencies.recyclerView
    compile Dependencies.cardView
    compile Dependencies.playAds
    compile Dependencies.googleAnalytics

    compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
        transitive = true
    }

    // Unit testing dependencies
    androidTestCompile 'junit:junit:4.12'
    // Set this dependency if you want to use the Hamcrest matcher library
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
    androidTestCompile 'com.android.support.test:runner:+'
    androidTestCompile 'com.android.support.test:rules:+'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
    androidTestCompile 'org.mockito:mockito-core:1.+'
    androidTestCompile "com.google.dexmaker:dexmaker:1.2"
    androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2"
    androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
}
build.gradle中的

有:

dependencies {
    compile project(':library')
}

但是在主项目的测试中,我收到以下错误: error: package android.support.test.espresso does not exist代表以下行

import android.support.test.espresso.UiController;

但是espresso是在图书馆项目中导入的。看起来,这个库项目没有编译为android测试。

可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您应该尝试为常用测试代码创建单独的库。否则,您将在应用apk中获得测试代码。

创建一个新的测试库(即" test-library"),将公共代码放入其中。然后在" build.gradle"中创建以下内容在app目录中。

dependencies {
    compile project(':library')
    androidTestCompile(':test-library')
}