对于特定项目,我们需要同时运行Espresso和Robolectric测试套件,但看起来他们的依赖关系似乎非常糟糕。
因此,我的问题是,是否可能同时拥有它们或者我们是否应该选择另一种解决方案?
我们的Gradle文件:
apply plugin: 'com.android.application'
apply plugin: 'jacoco'
android {
compileSdkVersion 24
buildToolsVersion "24.0.2"
defaultConfig {
targetSdkVersion 24
minSdkVersion 15
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug {
testCoverageEnabled true
}
}
}
dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.android.support:recyclerview-v7:24.2.1'
androidTestCompile 'junit:junit:4.12'
androidTestCompile "org.robolectric:robolectric:3.1.4"
compile ('com.github.nkzawa:socket.io-client:0.3.0')
}
提前致谢。
答案 0 :(得分:1)
您可以同时使用它们,但需要将它们分成单独的测试包。
您的robolectric测试应该属于test
包,而espresso测试应该位于androidTest
。您的依赖项也将根据包进行前缀(即robolectric依赖项将为testCompile
,而espresso测试将为androidTestCompile
)。
由于robolectric和espresso测试的性质,需要进行此拆分。作为一个单元测试框架的Robolectric有完全(在某种程度上)模拟的android sdk允许在JVM中执行测试,而espresso需要"真实" android用于执行测试。
来自谷歌的This guide涵盖了更详细的测试设置。