unit-testing - 参数化 jUnit 测试,无需更改运行程序

标签 unit-testing junit junit-runner

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

我的单元测试已经需要一个特殊的运行器,我不能用 Parameterized 替换它。 .也许有某种“运行者链接”,所以我可以同时让两个运行者? (只是一个疯狂的猜测......)

最佳答案

我已经发布了一个带有几个运行器的框架,这些运行器能够在测试类上强制执行参数化,同时允许您链接任意的 3rd-party 运行器以进行实际的测试执行。

该框架是 CallbackParams - (http://callbackparams.org) - 这些是运行程序:

  • CallbackParamsRunner
  • BddRunner

  • 通过使用框架注解...
  • @WrappedRunner

  • ...您可以通过这种方式指定任意的 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/

    相关文章:

    Android Studio 无法正确导入 androidx 测试类

    javascript - toBeFalsy() 的目的是什么?

    java - 使用 Spring、JUnit 和 Mockito 模拟 Autowiring 组件内的方法

    java - 如果特定测试失败则停止 JUnit 套件

    java - 单元测试很慢,因为spring classpath扫描多次扫描同一个包

    junit - 是否可以使用 PowerMockRule 而不是 PowerMockRunner 在最终类上模拟静态方法?

    java - 多个运行者的junit实现

    unit-testing - 如何对(在内存中) Entity Framework 进行单元测试?

    使用emitAll进行Android流程单元测试

    angular - 如何在 Angular 4 中使用提供程序模拟组件? - 单元测试