是否有一种干净的方式来运行参数化的jUnit 4测试而不更改跑步者,即不使用
@RunWith(Parameterized.class)
?
我的单元测试已经需要一个特殊的跑步者,我不能用Parameterized
取代这个。也许有某种“跑步者链”,所以我可以同时在两个跑步者? (只是猜测......)
答案 0 :(得分:4)
我发布了一个框架,其中包含几个能够在测试类上强制执行参数化的运行程序,同时允许您链接任意第三方运行程序以进行实际的测试执行。
框架是CallbackParams - (http://callbackparams.org) - 这些是跑步者:
使用框架注释......
...您可以这种方式指定任意第三方选手:
@RunWith(CallbackParamsRunner.class) // or @RunWith(BddRunner.class)
@WrappedRunner(YourSpecialRunner.class)
public class YourTest {
...
使用CallbackParams的参数化测试与传统的测试参数化方法有很大不同。在tutorial article中解释了原因,BddRunner解释了near the end of the tutorial article。
对于你的第一个CallbackParams测试,你可能更喜欢BddRunner,因为它需要较少的样板内容,但是当你开始在不同的测试类之间重用参数值时,最好使用CallbackParamsRunner,这需要更强的类型检查。
另外 - 使用BddRunner,你不能有任何@Test方法。相反,你必须使用框架注释@Given,@ When和@Then。这个要求有时会与第三方选手发生冲突,但通常效果很好。
祝你好运!
答案 1 :(得分:0)
org.junit.runners.Parameterized
由org.junit.internal.builders.AnnotatedBuilder
通过反映机制创建。也许你可以将Parameterized
扩展为你自己的Runner:@RunWith( MyParameterized .class)。