使用自定义测试运行器的参数化测试

时间:2018-03-15 13:32:17

标签: 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兼容?如果没有,扩展我们的设置的最简单方法是什么(不重写所有内容)?

1 个答案:

答案 0 :(得分:0)

您只能有一个Test Runner,但是您可以通过以下方式做到这一点:

 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);
    }
}