以编程方式创建junit启动配置

时间:2013-11-07 08:50:33

标签: java eclipse junit4

我创建了一个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);
    }
}

通过workCopy.setMappedResources()方法,我给出了相应的IProject作为参数。我尝试插件,我创建了一个名为&#39; testProject&#39;的项目,我的插件接收事件并创建junit启动配置文件。我检查文件,我在编辑器中打开它,并设置上面的属性。现在我打开了eclipse调试配置对话框,我遇到了问题

enter image description here

看起来对话框打开覆盖了启动配置,我没有在对话框中选择任何项目。

另一件事是,当我在包浏览器视图中右键单击我的项目以将项目调试为Junit时,它会创建另一个具有相同名称和后缀(1)的启动配置。所以&#34; testProject(1)&#34;。

0 个答案:

没有答案