你可以很容易地做一个自定义的,准系统JUnit转轮。下面是一个将以com.package.TestClass#methodName形式运行单个测试方法的方法:
import org.junit.runner.JUnitCore;
import org.junit.runner.Request;
import org.junit.runner.Result;
public class SingleJUnitTestRunner {
public static void main(String... args) throws ClassNotFoundException {
String[] classAndMethod = args[0].split("#");
Request request = Request.method(Class.forName(classAndMethod[0]),
classAndMethod[1]);
Result result = new JUnitCore().run(request);
System.exit(result.wasSuccessful() ? 0 : 1);
}
}
你可以这样调用它:
> java -cp path/to/testclasses:path/to/junit-4.8.2.jar SingleJUnitTestRunner
com.mycompany.product.MyTest#testB
在快速浏览一下JUnit源代码之后,我得出了和JUnit不支持这个结论一样的结论。这从来没有是我的问题,因为IDEs都有自定义JUnit集成,允许您在光标下运行测试方法,以及其他操作。我从来没有从命令行直接运行JUnit测试;我总是让IDE或构建工具(Ant,Maven)来处理它。特别是因为默认CLI入口点(JUnitCore)在测试失败时不产生除非零退出代码之外的任何结果输出。