【发布时间】:2018-05-18 16:31:17
【问题描述】:
语言:Kotlin JDK:1.8.0_162 JUnit 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”
【问题讨论】:
标签: java performance kotlin junit5