3

我编写了一个 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)”。

4

0 回答 0