【问题标题】:Parameterized tests that use a custom test runner使用自定义测试运行器的参数化测试
【发布时间】:2018-03-15 13:32:16
【问题描述】:

我们正在使用我们的自定义测试运行器,它扩展了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&lt;T&gt; 作为参数,而不是TestWithParameters(即它不使用参数)。

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

【问题讨论】:

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


    【解决方案1】:

    你只能有一个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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2023-03-18
      • 2018-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多