从Suite Runner和BlockJUnit4Runner扩展,同时定义一些testrrules



我需要编写许多测试。我扩展了JUnit的Suite Runner,以便能够添加新的注释,在注释中我可以提到几个先决条件类,这些类将在执行任何测试或设置之前执行。我的典型测试是这样的。

@RunWith(CustomSuiteRunner.class)
@BeforeSuite(Prerequisite.class)
@AfterSuite(CleanupOperations.class)
@Suite.SuiteClasses({
                SimpleTests.class,
                WeatherTests.class
            })
public class SimpleSuite {
}

我已经覆盖了public void run(final RunNotifier notifier),以添加所需的代码来触发BeforeSuite和AfterSuite注释中提到的先决条件和清理操作。

现在,我正试图找出如何通过扩展BlockJUnit4Runner来实现相同的目标?我找不到任何相当于运行的方法,开始执行以覆盖行为。有runChild,它在子线程被执行之前被触发。

我寻找这个的原因是我试图在接口中创建几个规则,并使我的测试实现,以便它们可用,然而,由于接口元素是静态的,最终JUnit忽略了这些。在我今天问的另一个问题中,我得到了答案,我可以通过扩展BlockJUnit4Runner和重写getTestRules()使JUnit考虑在接口中提到的规则。

所以,这就是我想知道的。

  1. 是否有可能扩展BlockJUnit4Runner,使其采取测试列表,并运行它们作为套件,还运行一些代码之前的任何测试得到执行和所有测试后执行?
  2. 我如何扩展套件运行器来考虑在实现的接口中定义的testrrules ?

扩展BlockJUnit4Runner并使其接受测试列表并将它们作为套件运行,并在扩展的runChild()方法中处理所需的测试依赖

public class CustomRunner extends BlockJUnit4ClassRunner {
  private List<String> testsToRun = Arrays.asList(new String[] { “sample1” });
  public CustomRunner(Class<?> klass) throws InitializationError {
    super(klass);
  }
  public void runChild(FrameworkMethod method, RunNotifier notifier) {
    //Handle any dependency logic by creating a customlistener registering notifier
    super.runChild(method,notifier);
  }
}

最新更新