参数化JUNIT测试而无需更改跑步者
-
12-10-2019 - |
题
是否有一种干净的方法来运行参数化JUNIT 4测试而不更改跑步者,即无需使用@RunWith(Parameterized.class)
?
我有单位测试,已经需要一个特殊的跑步者,我不能用 Parameterized
. 。也许有某种“跑步者链接”,所以我可以同时俩? (只是一个疯狂的猜测...)
解决方案
org.junit.runners.Parameterized
由 org.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。这一要求有时与第三方跑步者的要求相冲突,但通常效果很好。
祝你好运!