运行JUnit4测试 - 来自java程序

时间:2010-04-19 06:15:17

标签: unit-testing junit junit4

我想知道如何在java程序中运行一些JUnit4测试。基本上 - 根据运行时的某些条件,我需要决定使用哪个测试运行器。使用Junit3我可以覆盖TestCase类的runTest方法 - 但是在JUnit4测试中没有扩展TestCase类,所以我没有什么可以覆盖...是否有一些方法我需要实现......或者......其他......

2 个答案:

答案 0 :(得分:0)

以下是一些示例代码:

public void checkTests() throws org.junit.runners.model.InitializationError {
    checkTestClass((Class<?>) MyTestClss.class);
}

private void checkTestClass(Class<?> theClass) throws InitializationError {
    final RunNotifier notifier = new RunNotifier();
    notifier.addListener(new RunListener() {
        @Override
        public void testFailure(Failure failure) throws Exception {
            Assert.fail(failure.getMessage());

        }
    });

    final Runner runner = new BlockJUnit4ClassRunner(theClass);

    runner.run(notifier);
}

答案 1 :(得分:0)

  

我遇到的问题是我必须在每个测试用例之前运行一个方法(不能是静态的)

如果这种非静态方法与预处理测试用例有关,则可以通过在测试类中使用@Before注释方法来实现。请查看Junit4文档,了解@Before的行为。

否则,要简单地触发Junit测试类,您可以使用以下代码:

Runner r = 
try {
  r = new BlockJUnit4ClassRunner(Class.forName(testClass));
} catch (ClassNotFoundException | InitializationError e) {  // FIX if necessary: JDK 7 syntax
  // handle
}
JUnitCore c = new JUnitCore();
c.run(Request.runner(r));

希望有所帮助。