在任何应用程序中,当我们希望每次引入新特性时都能够只运行某些特定测试,就可以使用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 { // }