首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将某些单元测试排除在Android项目中。

如何将某些单元测试排除在Android项目中。
EN

Stack Overflow用户
提问于 2019-09-04 21:51:57
回答 1查看 942关注 0票数 3

我们进去了

  • 等级5.5版
  • android gralde插件3.5.0

我可以运行一组测试

代码语言:javascript
复制
./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上,我们看到了单元测试中的内存问题,并且我们怀疑机器人是电的,所以我们尝试单独的纯单元测试和机器人电气测试来尝试和隔离这些问题,或者为作业应用特定的修复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-12 14:45:37

我知道这不是最好的解决方案,但我确实设法使它工作,通过以下操作。

注释您的测试类

代码语言:javascript
复制
@Category(my.package.WhateverClass) // I personally used Robolectric

将以下内容添加到根build.gradle

代码语言:javascript
复制
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会认为它是一个任务,因为它在任何任务中都没有被定义为标志

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57796037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档