JUnit 4 JUnitCore详解示例
在任何应用程序中,当我们希望每次引入新特性时都能够只运行某些特定测试,就可以使用JUnit框架中的JUnitCore类来实现。
JUnitCore是JUnit包中内置的一个类,它基于门面设计模式。JUnitCore类用于只运行特定的测试类。
1.JUnitCore示例
假设应用程序发布中有两个新特性,这两个特性通过两个接口进行暴露。假设这两个接口的名称分别是FeatureOne和FeatureTwo。
1.1 需要测试的特性
针对这两个特性的JUnit测试如下所示:
public class TestFeatureOne { @Test public void testFirstFeature() { Assert.assertTrue(true); } }
public class TestFeatureTwo { @Test public void testSecondFeature() { Assert.assertTrue(true); } }
1.2 使用JUnitCore运行测试
要仅针对上述特性编写套件并运行测试,我们可以像下面这样编写:
@SuppressWarnings("rawtypes") public class WithJUnitCore { public static void main(String[] args) { List testCases = new ArrayList(); //Add test cases testCases.add(TestFeatureOne.class); testCases.add(TestFeatureTwo.class); for (Class testCase : testCases) { runTestCase(testCase); } } private static void runTestCase(Class testCase) { Result result = JUnitCore.runClasses(testCase); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } } }
2 从命令行使用JUnitCore运行测试
要从命令行手动运行测试类,可以在控制台运行以下命令。所有测试类的名称之间用空格分隔。
$ java org.junit.runner.JUnitCore TestFeatureOne TestFeatureTwo
3 使用JUnitCore运行所有测试
创建JUnit套件并执行应用程序中的所有测试用例是一个很好的做法。这虽然需要一些工作,但仍然是JUnit中执行所有测试的最佳方式。
@RunWith(Suite.class) @SuiteClasses({ TestFeatureOne.class, TestFeatureTwo.class }) public class TestFeatureSuite { // }