java - 使用自定义测试运行程序的参数化测试

标签 java unit-testing junit parameterized parameterized-unit-test

我们正在使用自定义测试运行器,它扩展了 ParentRunner :

public class OurTestRunner extends ParentRunner<TestRunnerForOneConfigCase> {...}

class TestRunnerForOneConfigCase extends BlockJUnit4ClassRunner {...}

how to combine @RunWith with @RunWith(Parameterized.class) 的启发,我想将 OurTestRunner 与测试参数一起使用。所以我正在尝试实现工厂:

public class OurTestRunnerFactory implements ParametersRunnerFactory {
  @Override
  public org.junit.runner.Runner createRunnerForTestWithParameters(TestWithParameters test) throws InitializationError {
    return new OurTestRunner(test /* but it takes Class<T> as parameter */); 
  }
}

但是,OurTestRunner 及其父类 ParentRunner 仅采用 Class<T> 作为参数,而不采用 TestWithParameters (即它不采用参数)。

是否有与 ParentRunner 兼容的 Parameterized 版本?如果没有,扩展我们的设置的最简单方法是什么(无需重写所有内容)?

最佳答案

你只能有一个测试运行者,但你可以这样做:

 public class SimpleExampleTest {

    @Rule
    public Generator<String> params =
        new ListGenerator(asList("alpha", "beta", "gamma"));

    @Test
    public void testSomething() throws Exception {
        assertTrue(params.value().length() >= 4);
    }
}

关于java - 使用自定义测试运行程序的参数化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49300810/

相关文章:

angularjs - AngularJS 中的单元测试 promise 错误 : Expected a spy, 但得到了 getCtrl({ })

java - 当单元测试方法具有断言而不是异常时,最佳实践是什么?

java - 使用 ReflectionTestUtils 模拟静态类

java - Applet 面板、一种固定尺寸和动态 JTextField

java - 如果打开 JarFile 时抛出 I/O 错误,我应该关闭它吗? (处理流的一般规则是否适用?)

java - 纳秒甘特图

java - 运行 Java 代理 XPage

angularjs - 使用 ngModel 的单元测试 Angular 指令

java - 运行多个测试的常见条件?

eclipse - 在 Eclipse 中定制新的 JUnit 模板?