有没有一种干净的方法来运行参数化的 jUnit 4 测试而不改变运行器,即不使用@RunWith(Parameterized.class)
?
我的单元测试已经需要一个特殊的运行器,我不能用 Parameterized
替换它。 .也许有某种“运行者链接”,所以我可以同时让两个运行者? (只是一个疯狂的猜测......)
最佳答案
我已经发布了一个带有几个运行器的框架,这些运行器能够在测试类上强制执行参数化,同时允许您链接任意的 3rd-party 运行器以进行实际的测试执行。
该框架是 CallbackParams - (http://callbackparams.org) - 这些是运行程序:
通过使用框架注解...
...您可以通过这种方式指定任意的 3rd-party runner:
@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-methods。相反,您必须使用框架注释@Given、@When 和@Then。该要求有时会与第三方运行者的要求发生冲突,但通常效果很好。
祝你好运!
关于unit-testing - 参数化 jUnit 测试,无需更改运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499503/