我有一个图书馆项目和一些主要项目,这取决于该图书馆项目。
我想为主项目编写测试,但测试常用函数应放在库项目中以减少代码重复。
我在库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测试。
可以解决这个问题吗?
答案 0 :(得分:1)
您应该尝试为常用测试代码创建单独的库。否则,您将在应用apk中获得测试代码。
创建一个新的测试库(即" test-library"),将公共代码放入其中。然后在" build.gradle"中创建以下内容在app目录中。
dependencies {
compile project(':library')
androidTestCompile(':test-library')
}