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



我有一个只用于模拟测试的特定构建变体。我宁愿不针对这种变体运行单元测试(但希望针对其他变体运行单元测试)。有没有办法通知gradle跳过这个特定变体的单元测试?

在我的例子中,我想跳过发布变体中的所有单元测试。可以这样做:

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

我想跳过特定版本的测试。我使用下面的命令使它工作。

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
    }
}

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

如果直接执行Gradle任务,你可以调用'testReleaseVariant',而不是调用'test',只在ReleaseVariant上执行测试。你也可以将其他非模拟变量串在一起:'testReleaseVariant ' testFreeVariant'等。

如果你在Android Studio中通过Run/Debug菜单调用任务,你可以通过点击绿色播放按钮旁边的下拉菜单并选择"编辑配置"来编辑配置。在Gradle->Tests下的'app'和"Tasks"字段中,你可以指定"testReleaseVariant",或者将你想要执行的任何其他任务串在一起。

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

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

这将跳过任务,但除了task.enabled = false之外,这也将跳过它的依赖项,因此compileJava等将不会为mock变体执行。

相关内容

  • 没有找到相关文章

最新更新