参数化的jUnit测试,无需更改跑步者

有没有一种干净的方式来运行参数化的jUnit 4测试而不更改跑步者,即不使用@RunWith(Parameterized.class)

我有单元测试需要一个特殊的跑步者,我不能用Parameterized替换这个。 也许有某种“跑步者链”,所以我可以在同一时间跑步者? (只是一个疯狂的猜测......)


org.junit.runners.Parameterized是由org.junit.internal.builders.AnnotatedBuilder通过反射机制创建的。 也许你可以扩展Parameterized作为你自己的Runner:@RunWith( MyParameterized.class )。


我已经发布了一个包含两个运行程序的框架,它们可以在测试类上强制实现参数化,同时允许您为实际的测试执行链接任意的第三方运行程序。

该框架是CallbackParams - (http://callbackparams.org) - 这些是跑步者:

  • CallbackParamsRunner
  • BddRunner
  • 通过使用框架注释...

  • @WrappedRunner
  • ...你可以用这种方式指定一个任意的第三方跑步者:

    @RunWith(CallbackParamsRunner.class) // or @RunWith(BddRunner.class)
    @WrappedRunner(YourSpecialRunner.class)
    public class YourTest {
    ...
    

    但是,使用CallbackParams进行参数化测试与传统的测试参数化方法有很大不同。 在本教程文章中,使用BddRunner在教程文章结尾解释了原因。

    对于你的第一个CallbackParams测试,你可能更喜欢BddRunner,因为它需要的锅炉板材少,但是当你开始在不同的测试类之间重用参数值时,你可能最好使用CallbackParamsRunner,这需要更强的类型检查。

    另外 - 使用BddRunner时,您不能有任何@测试方法。 相反,您必须使用框架注释@Given,@When和@Then。 该要求有时与第三方跑步者的要求相冲突,但通常效果不错。

    祝你好运!

    链接地址: http://www.djcxy.com/p/49405.html

    上一篇: Parameterized jUnit test without changing runner

    下一篇: disable the uitableview highlighting but allow the selection of individual cells