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

问题描述 投票:5回答:4

我有一个特定的构建变体,仅用于模拟测试。我不想对这种变体运行单元测试(但想对其他变体运行它们)。是否有任何方法可以通知gradle跳过此特定变体的单元测试?

android testing gradle variant
4个回答
5
投票

就我而言,我想从发行版本中跳过所有单元测试。可以做到这一点:

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

    return true;
}

0
投票

Gradle仅允许您调用要专门执行的任务。

如果直接执行Gradle任务,而不是调用“ test”,则可以调用“ testReleaseVariant”以仅在ReleaseVariant上执行测试。您还可以将其他非模拟变体组合在一起:“ testReleaseVariant testFreeVariant”等。

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


0
投票

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

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

这将跳过任务,但除task.enabled = false也将跳过其依赖性,因此compileJava等。将不会针对模拟变量执行。


0
投票

我想跳过特定版本的测试。我通过以下方法获得了工作。

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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.