当我执行这段代码时:
Object[] segments = new Object[2];
segments[0] = // JUnit Test Class 1
segments[1] = // JUnit Test Class 2
TreePath treepath = new TreePath(segments);
TreeSelection treeselection = new TreeSelection(treepath);
JUnitLaunchShortcut j = new JUnitLaunchShortcut();
j.launch(treeselection, ILaunchManager.RUN_MODE);
Eclipse / JUnit Plugin只执行 JUnit Test Class 2 ,也许执行两个Test Class但只在JUnit上显示查看最后一个Test Class(可能)....
你怎么想?我如何“启动”所有测试类?
答案 0 :(得分:1)
正如您在评论中所说,eclipse的JUnit插件不支持配置中的多个选择。但是,org.eclipse.jdt.junit.launcher.JUnitLaunchConfigurationDelegate
确实支持多个测试启动。当您在JUnit插件中选择项目/包/测试类,并选择Run as JUnit test时,它会将配置传递给JUnitLaunchConfigurationDelegate,在那里它评估要运行的测试。如果有,它会调用RemoteTestRunner:
RemoteTestRunner -test TestClass
如果找到多个文件,则运行方式如下:
RemoteTestRunner -testfile testNamesxxxx.txt
其中testNamesxxx.test是一个包含要运行的测试列表的文件,例如:
uk.co.farwell.junit.parameters.ParameterTest
uk.co.farwell.junit.run.AllTests
uk.co.farwell.junit.run.Class1Test
此文件在临时目录中创建。因此,探索的一种可能方法是扩展JUnitLaunchConfigurationDelegate并覆盖evaluateTests方法,该方法具有以下签名:
protected IMember[] evaluateTests(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
您还可以通过ILaunchConfiguration传达测试列表,但是您也可以为插件扩展它。