我们进去了
我可以运行一组测试
./gradlew :app:testDebug --tests="*Fragment*" --tests="*Activity*"但是我想找到一种方法来做相反的操作,即不运行匹配这些选项的测试,比如
./gradlew :app:testDebug --notTests="*Fragment*" --notTests="*Activity*"
有一个excludeTests选项https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/testing/TestFilter.html,但我不能在android项目中使用这些选项,这些都是纯java选项。
一些上下文:在我们的CI上,我们看到了单元测试中的内存问题,并且我们怀疑机器人是电的,所以我们尝试单独的纯单元测试和机器人电气测试来尝试和隔离这些问题,或者为作业应用特定的修复。
发布于 2019-09-12 14:45:37
我知道这不是最好的解决方案,但我确实设法使它工作,通过以下操作。
注释您的测试类
@Category(my.package.WhateverClass) // I personally used Robolectric将以下内容添加到根build.gradle中
if (project.gradle.startParameter?.taskRequests?.args[0]?.remove("--robolectric")) {
subprojects
.all {
it.tasks
.withType(Test)
.configureEach {
println "Configuring task $it.name"
useJUnit {
includeCategories 'my.package.WhateverClass'
}
}
}
} else if (project.gradle.startParameter?.taskRequests?.args[0]?.remove("--unit")) {
subprojects
.all {
it.tasks
.withType(Test)
.configureEach {
println "Configuring task $it.name"
useJUnit {
excludeCategories 'my.package.WhateverClass'
}
}
}
}以./gradlew project:testDebug --robolectric或./gradlew project:testDebug --unit的形式运行测试
如果不添加任何内容,默认情况下它将运行所有测试
如果您有更多的时间,您可能会创建一个任务,该任务从测试扩展到添加相同的配置。
注意:.remove('--robolectric')在那里是因为Gradle会认为它是一个任务,因为它在任何任务中都没有被定义为标志
https://stackoverflow.com/questions/57796037
复制相似问题