我们正在使用自定义测试运行器,它扩展了 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/