我编写了一个 eclipse(Juno) 插件来在创建项目时自动创建一个 junit 启动配置。我监听工作区中的变化,当一个新的 java 项目被创建时,我启动一个进程来创建相应的启动配置:
public static void create(IProject project) {
ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType launchType = manager
.getLaunchConfigurationType(JUNIT_LAUNCH_IDENTIFIER);
try {
ILaunchConfigurationWorkingCopy workingCopy = launchType.newInstance(null, project.getName());
List<IResource> resources = new ArrayList<IResource>();
resources.add(project);
IResource[] resourcesArray = toArray(resources);
workingCopy.setMappedResources(resources.toArray(resourcesArray) );
workingCopy.setAttribute("org.eclipse.jdt.junit.CONTAINER", project.getName().replace("#", "\\#"));
workingCopy.setAttribute("org.eclipse.jdt.junit.KEEPRUNNING_ATTR", false);
workingCopy.setAttribute("org.eclipse.jdt.junit.TESTNAME", "");
workingCopy.setAttribute("org.eclipse.jdt.junit.TEST_KIND", "org.eclipse.jdt.junit.loader.junit4");
workingCopy.setAttribute("org.eclipse.jdt.launching.MAIN_TYPE", "");
workingCopy.setAttribute("org.eclipse.jdt.launching.PROJECT_ATTR", "");
workingCopy.setAttribute("org.eclipse.jdt.launching.VM_ARGUMENTS", "-Xms128m -Xmx512m -DSYS_DRIVE=${env_var:SYS_DRIVE} " +
"-DAPPL_DRIVE=${env_var:APPL_DRIVE} -DDATA1_DRIVE=${env_var:DATA1_DRIVE} -DSYS_DIR=${env_var:SYS_DIR} " +
"-DEXT1_DRIVE=F: -DTESTDATA_ROOT=${workspace_loc:trunk#IS+LVIS/testdata}");
workingCopy.doSave();
} catch (CoreException e) {
log.log(Level.WARNING,
"Unable to create a new launch configuration.", e);
}
}
通过方法workingCopy.setMappedResources(),我将相应的IProject 作为参数。我尝试使用插件,创建一个名为“testProject”的项目,我的插件接收事件并创建 junit 启动配置文件。我检查了文件,在编辑器中打开它并设置了上面的属性。现在我打开了 Eclipse 调试配置对话框,我遇到了一个问题
看起来对话框打开覆盖了启动配置,我在对话框中没有选择项目。
另一件事是,当我在包资源管理器视图中右键单击我的项目以将项目调试为 Junit 时,它会创建另一个具有相同名称和后缀 (1) 的启动配置。所以“testProject(1)”。