【问题标题】:How to combine JUnit4 @RunWith(Parameterized.class) and JUnit5 @ParameterizedTest如何结合 JUnit4 @RunWith(Parameterized.class) 和 JUnit5 @ParameterizedTest
【发布时间】:2019-07-14 18:43:37
【问题描述】:

我正在尝试将 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()
    }
}

【问题讨论】:

  • 不要在同一个测试类中混用 junit4 和 junit5。您可以轻松地在多个测试中使用相同的@MethhodSource。
  • 嘿,Imre,你能举例说明你的意思吗?

标签: kotlin junit4 junit5


【解决方案1】:

我尝试了同样的方法,但最后我得出的结论是:你不能。

您无法使用 JUnit 5 附带的注释来使用 JUnit 4 Parameterized 测试运行器。

您需要迁移到 JUnit 5 才能使用最新功能,例如 TestFactory 或描述的参数化测试的所有强大注释 here

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2022-11-12
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多