9

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

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

4

2 回答 2

6

我发布了一个框架,其中包含几个运行程序,它们能够在测试类上强制执行参数化,同时允许您链接任意 3rd 方运行程序以进行实际测试执行。

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

  • CallbackParamsRunner
  • BddRunner

通过使用框架注释...

  • @WrappedRunner

...您可以通过以下方式指定任意 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。该要求有时会与第三方跑步者的要求发生冲突,但通常效果很好。

祝你好运!

于 2011-04-09T08:42:42.550 回答
1

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

于 2010-12-24T05:37:36.527 回答