在Android + Gradle中跳过特定构建变体的测试?

时间:2014-08-18 17:02:20

标签: android testing gradle variant

我有一个特定的构建变体,仅用于模拟测试。我宁愿不针对这个变体运行单元测试(但是想要针对其他变体运行它们)。有没有办法通知gradle跳过这个特定变体的单元测试?

4 个答案:

答案 0 :(得分:4)

在我的情况下,我想跳过发布变体中的所有单元测试。这样做可以实现:

gradle.taskGraph.useFilter { task ->
    if (task.name.startsWith("test") && task.name.contains("ReleaseUnitTest")) {
        return false;
    }

    return true;
}

答案 1 :(得分:1)

我想跳过针对特定版本的测试。我使用下面的方法使它起作用。

tasks.whenTaskAdded {task ->
    if(task.name.contains("task")) {
        task.enabled = false
    }
}

如果要禁用多个任务,

tasks.whenTaskAdded {task ->
    if(task.name.contains("task1") || task.name.contains("task2") || task.name.contains("task3")) {
        task.enabled = false
    }
}

答案 2 :(得分:0)

Gradle允许您只调用您特别想要执行的任务。

如果直接执行Gradle任务,而不是调用'test',则可以调用'testReleaseVariant'来仅对ReleaseVariant执行测试。您还可以将其他非模拟变体串联起来:'testReleaseVariant testFreeVariant'等。

如果您通过Android Studio中的“运行/调试”菜单调用任务,则可以通过单击绿色播放按钮旁边的下拉列表并选择“编辑配置”来编辑配置。在Gradle->测试'app'和“Tasks”字段中,您可以指定“testReleaseVariant”,或将您想要执行的任何其他任务串起来。

答案 3 :(得分:0)

您可以通过向taskGraph添加过滤器来排除执行任务:

gradle.taskGraph.useFilter { task ->
    task.name != "testMock"
}

这将跳过任务,但不是例如task.enabled = false这也会跳过它的依赖关系,所以compileJava等。将不会为模拟变体执行。