tch*_*106 5 junit android gradle robolectric
我想使用Junit类别注释对robolectric单元测试进行分组,以便某些测试不会在某种情况下运行.
在一个普通的java项目中,我知道我可以使用
apply plugin: 'java'
test {
useJUnit {
includeCategories 'FastTest'
}
}
Run Code Online (Sandbox Code Playgroud)
指定类别.
但显然'java'插件与Android插件'com.android.application'不兼容.
Error:The 'java' plugin has been applied, but it is not compatible with the Android plugins.
Run Code Online (Sandbox Code Playgroud)
我试图创建一个自定义gradle任务
sourceSets {
test {
java.srcDir file('src/test/java')
resources.srcDir file('src/test/resources')
}
}
task testWithFastCategory(type: Test) {
group = "test"
testClassesDir = sourceSets.test.output.classesDir
classpath = sourceSets.test.runtimeClasspath
useJUnit {
includeCategories 'FastTest'
}
}
Run Code Online (Sandbox Code Playgroud)
但gradle似乎无法找到测试的正确类路径.
有人可以提供样本gradle设置来在Android项目下按类别运行robolectric测试吗?
忘记发布我的解决方案:
android {
testOptions {
unitTests.all {
useJUnit {
// Include or exclude unit tests with specific categories
// ex. use -DincludeCategories=com.ooxx.test.FastRun
// to run tests with 'FastRun' category on CI server.
String defaultPackage = "com.ooxx.test."
if (System.properties['includeCategories'] != null) {
def categories = System.properties['includeCategories'].split(',')
categories = categories.collect {
it.charAt(0).isUpperCase() ? defaultPackage + it : it
}
println name + ": include category"
categories.each { category ->
println " - " + category
}
includeCategories categories as String[]
}
// ex. use -DexcludeCategories=com.ooxx.test.DoNotRun
if (System.properties['excludeCategories'] != null) {
def categories = System.properties['excludeCategories'].split(',')
categories = categories.collect {
it.charAt(0).isUpperCase() ? defaultPackage + it : it
}
println name + ": exclude category"
categories.each { category ->
println " - " + category
}
excludeCategories categories as String[]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |