gpt4 book ai didi

java - JUnit 5 测试工厂迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:32:51 25 4
gpt4 key购买 nike

语言: Kotlin JDK:1.8.0_162JUnit 5:5.2.0

尝试对大型数据集进行测试,并将以下伪代码作为我们的框架。是否有一种受支持的方式来将测试数据流式传输进来?测试数据为 4GB,因此无法将其作为数组返回。

data class BigData(val id: Int, val bytes: ByteArray)

@TestFactory
fun TestIt() = getTestData()
.map { (id, bytes) ->
DynamicTest.dynamicTest("DataId: $id") {
var valid = DoSomethingWithLargeData(bytes)
Assertions.assertEquals(true, valid)
}
}

fun getTestData() = buildSequence {
val inputStream = File(largeData).inputStream()

inputStream.bufferedReader().useLines { lines ->
lines.forEach {
val parts = it.split(',')
val id = parts[0].toInt()
val bytes = decoder.decode(parts[1])
yield(BigData(id, bytes))
}
}
}

上面的代码出现以下错误

“引起:org.junit.platform.commons.util.PreconditionViolationException:无法将 kotlin.sequences.TransformingSequence 的实例转换为流:kotlin.sequences.TransformingSequence@36a11785”

最佳答案

当然,在我发布问题之后,我就弄明白了。 😠

@TestFactory
fun TestIt() : Iterator<DynamicTest> {
return getTestData
.map { (id, bytes) ->
DynamicTest.dynamicTest("DataId: $id") {
var valid = DoSomethingWithLargeData(bytes)
Assertions.assertEquals(true, valid)
}
}.iterator()
}

错误有点确实告诉你出了什么问题,这让我试图提供它所要求的。

“TestIt() 必须返回 org.junit.jupiter.api.DynamicNode 的 Stream、Collection、Iterable 或 Iterator”

此外,他们的文档擅长展示工作动态测试的示例

https://junit.org/junit5/docs/current/user-guide/#writing-tests-dynamic-tests

我希望这对其他人有帮助。

关于java - JUnit 5 测试工厂迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50415706/

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