gpt4 book ai didi

gradle - Kotlintest 中的数据表测试 - 高级方法名称和测试用例的传播

转载 作者:行者123 更新时间:2023-12-02 12:46:31 24 4
gpt4 key购买 nike

我正在使用 Kotlintest 和数据表来测试使用 Kotlin、SpringBoot 和 Gradle 的应用程序,因为当您的表中有复杂数据时,语法比 ParameterizedJunitTests 更简洁。

有没有办法像parameterized tests in JUnit那样在方法标题中使用参数名称? ?此外,我所有的测试执行都列为一个测试,但我想在每个数据表行的测试结果中有一行。我在 Documentation 中没有找到这两个主题。 .

为了让事情更清楚一个 Kotlintest 的例子:

class AdditionSpec : FunSpec() {
init {

test("x + y is sum") {
table(
headers("x", "y", "sum"),
row(1, 1, 2),
row(50, 50, 100),
row(3, 1, 2)
).forAll { x, y, sum ->
assertThat(x + y).isEqualTo(sum)
}
}
}
}

以及相应的 JUnit 示例:

@RunWith(Parameterized::class)
class AdditionTest {

@ParameterizedTest(name = "adding {0} and {1} should result in {2}")
@CsvSource("1,1,2", "50, 50, 100", "3, 1, 5")
fun testAdd(x: Int, y: Int, sum: Int) {
assertThat(x + y).isEqualTo(sum);
}

}

有 1/3 失败: Kotlin 测试: Kotlintest gradle result with 1/3 failures联合体: Junit gradle result with 1/3 failures

在kotlintest中使用数据表的时候有没有类似@ParameterizedTest(name = "adding {0} and {1} should result in {2}")的东西?

最佳答案

您可以反向嵌套。不要在 test 中使用 table,只需将 test 嵌套在 table 中即可。

class AdditionSpec : FunSpec() {
init {
context("x + y is sum") {
table(
headers("x", "y", "sum"),
row(1, 1, 2),
row(50, 50, 100),
row(3, 1, 2)
).forAll { x, y, sum ->
test("$x + $y should be $sum") {
x + y shouldBe sum
}
}
}
}
}

关于gradle - Kotlintest 中的数据表测试 - 高级方法名称和测试用例的传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303081/

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