有没有一种干净的方法来运行参数化的 jUnit 4 测试而不改变跑步者,即不使用
@RunWith(Parameterized.class)
?
我有单元测试需要一个特殊的跑步者,我不能用Parameterized
. 也许有某种“跑步者链接”,所以我可以同时两个跑步者?(只是一个疯狂的猜测......)
有没有一种干净的方法来运行参数化的 jUnit 4 测试而不改变跑步者,即不使用
@RunWith(Parameterized.class)
?
我有单元测试需要一个特殊的跑步者,我不能用Parameterized
. 也许有某种“跑步者链接”,所以我可以同时两个跑步者?(只是一个疯狂的猜测......)
我发布了一个框架,其中包含几个运行程序,它们能够在测试类上强制执行参数化,同时允许您链接任意 3rd 方运行程序以进行实际测试执行。
框架是 CallbackParams - (http://callbackparams.org) - 这些是跑步者:
通过使用框架注释...
...您可以通过以下方式指定任意 3rd-party 跑步者:
@RunWith(CallbackParamsRunner.class) // or @RunWith(BddRunner.class)
@WrappedRunner(YourSpecialRunner.class)
public class YourTest {
...
然而,使用 CallbackParams 的参数化测试与传统的测试参数化方法有很大不同。原因在本教程文章中进行了解释,BddRunner 在本教程文章的结尾处进行了解释。
对于您的第一个 CallbackParams 测试,您可能更喜欢 BddRunner,因为它需要更少的样板文件,但是当您开始在不同的测试类之间重用参数值时,您可能最好使用 CallbackParamsRunner,这需要更强的类型检查。
另外 - 对于 BddRunner,您不能有任何 @Test-methods。相反,您必须使用框架注解@Given、@When 和@Then。该要求有时会与第三方跑步者的要求发生冲突,但通常效果很好。
祝你好运!
org.junit.runners.Parameterized
org.junit.internal.builders.AnnotatedBuilder
由反射机制创建。也许您可以扩展Parameterized
为您自己的 Runner:@RunWith( MyParameterized .class)。