Как объединить JUnit4 @RunWith (Parameterized.class) и JUnit5 @ParameterizedTest - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь объединить концепцию параметризованного бегуна из JUnit4 с параметризованным тестом JUnit5.По сути, я хочу протестировать две отдельные функции на одном наборе данных.

Я знаю, что мог бы просто добавить функцию в качестве другого аргумента в сам параметризованный тест, но я пытаюсь упростить изменение или добавление новых функций для тестирования.

Смогу ли я использовать вложенныетестовые занятия, чтобы достичь этого?Я не уверен, что лучший способ подойти.

@RunWith(Parameterized::class)
class RomanNumeralTest(val func: (Int) -> String) {

    @ParameterizedTest(name = "{index} - Expect [{0}] should return [{1}]")
    @MethodSource("testData")
    fun `Test roman numeral from integer values`(num: Int, expected: String) =
            assertEquals(expected, func(num))

    companion object {

        @JvmStatic
        @Parameterized.Parameters
        fun data(): Collection<Array<(Int) -> String>> {
            return listOf(
                    arrayOf({num -> roman(num)}),
                    arrayOf({num -> num.toRomanNumeral()})
            )
        }

        @JvmStatic
        private fun testData() = sequenceOf(
                arrayOf(1, "I"),
                arrayOf(2, "II"),
                arrayOf(3, "III"),
                arrayOf(4, "IV"),
                arrayOf(5, "V")
        ).asStream()
    }
}

1 Ответ

0 голосов
/ 20 марта 2019

Я попробовал то же самое, но в итоге я пришел к выводу, что: вы не можете .

Нет способа использовать JUnit.4 Parameterized тестовый прогон, использующий аннотации, поставляемые с JUnit 5.

Вам нужно перейти на JUnit 5, чтобы использовать новейшие функции, такие как TestFactory или все мощные аннотации параметризованных тестов, описанные здесь

...