是否有一种干净的方法来运行参数化JUNIT 4测试而不更改跑步者,即无需使用@RunWith(Parameterized.class)?

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

有帮助吗?

解决方案

org.junit.runners.Parameterizedorg.junit.internal.builders.AnnotatedBuilder 通过反思机制。也许你可以扩展 Parameterized 作为您自己的跑步者:@runwith(我的参数化。班级)。

其他提示

我发布了一个框架,其中有几个跑步者能够在测试级上执行参数化,同时允许您为实际的测试执行链接任意的第三方跑步者。

框架是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,您一定不能拥有任何 @test -hethods。相反,您必须使用框架注释@given, @ @when和@then。这一要求有时与第三方跑步者的要求相冲突,但通常效果很好。

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top