gpt4 book ai didi

gradle - 使用 Gradle 对 JUnit 测试进行分组

转载 作者:行者123 更新时间:2023-12-03 03:42:33 25 4
gpt4 key购买 nike

我创建了一个新的集成测试 Groovy 项目,并希望能够将不同组件的测试组合在一起。例如,某些测试仅对 docker 镜像有效,而其他测试则用于测试本地运行的 webapp。我还想获得测试结果的报告,并且如果需要也能够一遍又一遍地运行测试。

最佳答案

在 JUnit 中对测试进行分组的第一步是创建一个接口(interface)来命名组。在您的测试类可以访问的包中创建它。

如果您的测试类如下所示:

package com.example.test.api.get.cert

class ByIssuedBeforeTest {
//awesome tests
}

然后像这样创建一个空接口(interface):
package com.example.test

interface DockerTest {}

现在将您的测试类更改为如下所示:
package com.example.test.api.get.cert

import org.junit.experimental.categories.Category

@Category(DockerTest.class)
class ByIssuedBeforeTest {
//awesome tests
}

您还可以注释单个测试而不是整个类(class)。

现在在您的 build.gradle 文件中:
apply plugin: 'java'

sourceSets {
main {
java {
srcDirs = ["src/main/java", "src/main/groovy"]
}
}
test {
java {
srcDirs = ["src/test/java", "src/test/groovy"]
}
}
}

test {
outputs.upToDateWhen { false }
reports {
junitXml.enabled=true
html.enabled=true
}
}

task nondockerTest(type: Test) {
outputs.upToDateWhen { false }
useJUnit {
excludeCategories 'com.example.test.DockerTest'
}
}

task dockerTest(type: Test) {
outputs.upToDateWhen { false }
useJUnit {
includeCategories 'com.example.test.DockerTest'
}
}

gradle 的 java 插件为您提供了测试任务。在测试任务中,我们添加 outputs行以防止测试任务被标记为“UP-TO-DATE”,本质上是强制 gradle 在我们调用它时始终运行任务而不是缓存结果。

报告 block 允许创建 JUnit 报告文件。它们将被放置在 build/reports/tests 目录中。如果您运行 nonDockerTest,它将是 build/reports/tests/nondockerTest/index.html。

useJUnit block 告诉 Gradle 使用 JUnit 来运行测试以及要运行的测试类别(如果使用 includeCategories)或不运行的类别(如果使用 excludeCategories)。
gradle test运行所有测试。
gradle nondockerTest运行未标记为 DockerTest 类别的测试。
gradle dockerTest只运行标有 DockerTest 类别的测试。

这些任务中的每一个都将在 /build/reports/tests 中创建报告。目录。

关于gradle - 使用 Gradle 对 JUnit 测试进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42305453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com