JUnit 5 TestFactory Iterator - PullRequest
       14

JUnit 5 TestFactory Iterator

0 голосов
/ 18 мая 2018

Lang: Kotlin JDK: 1.8.0_162 JUnit 5: 5.2.0

Попытка протестировать большой набор данных и использовать в качестве нашей структуры следующий псевдокод.Существует ли поддерживаемый способ потоковой передачи тестовых данных?Тестовые данные имеют размер 4 ГБ, поэтому их возврат в виде массива невозможен.

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.sequence.TransformingSequence в поток: kotlin.sequence.TransformingSequence@36a11785 "

1 Ответ

0 голосов
/ 18 мая 2018

Конечно, после того, как я отправлю вопрос, я это выясню.100

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

Ошибка, действительно, действительно говорит вам, что не так, что привело меня к попытке предоставить то, о чем она просила.

"TestIt () должен возвращать Stream, Collection, Iterableили Итератор org.junit.jupiter.api.DynamicNode "

Кроме того, их документация хороша для демонстрации примеров рабочих динамических тестов

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

Надеюсь, это поможет кому-то еще.

...