如何在针对特定 Gradle 构建风格的同时从命令行运行单个单元测试方法

Posted

技术标签:

【中文标题】如何在针对特定 Gradle 构建风格的同时从命令行运行单个单元测试方法【英文标题】:How to run a single unit test method from command line while targeting a specific Gradle build flavor 【发布时间】:2019-11-25 04:16:18 【问题描述】:

我正在尝试从命令行仅运行一个 android 测试用例。

在 IDE 中我可以右键单击并运行,但在 CLI 中会失败:

./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"

错误:

> Unknown command-line option '--tests'.

如何运行单个 UNIT TEST 方法?我想强调我想运行单个单元测试,而不是从命令行进行仪器测试。

更新:我有一个相机应用。想象一下,我有一个名为 usCameraDebug 的构建变体。 (这意味着美国相机调试)现在你能告诉我如何运行我称为mySingleTest的单个测试用例吗?

我按照你的说法试过这个:./gradlew test --tests "*mySingleTest"

./gradlew app:usCameraDebug test --tests "*mySingleTest"

还有:./gradlew app:usCameraDebugUnitTest --tests "*mySingleTest" 但它 。不起作用。你能根据我的构建变体准确地告诉我要输入什么。默认情况下,它在一个名为“app”的模块中。

这是我要运行的测试:

package  com.xyz.cameras.parts
    @Test
        fun mySingleTest()
            assertEquals(12,13)
        

【问题讨论】:

【参考方案1】:

在查找测试名称时需要在模式中指定通配符,并确保使用模块+风味。 --tests 不适用于 ./gradlew test./gradlew check

试试这个模式 -> ./gradlew :<module>:<flavor> --tests "*textThatTestNameContains*"

示例-> ./gradlew :profile:testDebug --tests "*my_profile*" 将运行此测试:

@Test
public void my_profile_pageview()

此外,使用--info 标志运行有助于查看测试本身或--debug 以获得更多输出。例如 ./gradlew --info :profile:testDebug --tests "*my_profile*"

【讨论】:

我放了一个更新的 .我的问题中的部分,你能检查一下。你提到的事情不起作用 @j2emanue 嘿!检查我更新的答案。我相信这应该对你有用。我认为您可能只需要在测试名称的末尾加上一个额外的*。试试./gradlew app:usCameraDebugUnitTest --tests "*mySingleTest*" 我认为你不需要在应用程序前加一个冒号,但添加它不会有什么坏处。 ./gradlew :app:usCameraDebugUnitTest --tests "*mySingleTest*" 这个对我有用:/gradlew :app:usCameraDebugUnitTest --tests "*mySingleTest",谢谢

以上是关于如何在针对特定 Gradle 构建风格的同时从命令行运行单个单元测试方法的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 6 针对已有的构建如何创建一个构建扫描

Android Gradle - 仅针对特定任务过滤掉变体

如何针对构建持续时间和 RAM 使用优化 gradle 构建性能?

如何构建 sencha 应用程序以针对特定文件夹中的生产?

Gradle - 如何仅针对特定类型的文件在 fileTree 中迭代

在使用 Android Gradle 插件 3.3.0 合并资源期间构建失败