在Java代码中设置Eclipse Workspace

时间:2015-01-05 22:38:17

标签: java eclipse junit eclipse-plugin

我正在撰写JUnit Plug-In Test,它会从Java Project打开WorkSpace并将其传递给第三方库以进行进一步处理。这就是我到目前为止所做的:

@Test
public void testJavaProjectForwarding() {
    try {
        IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
        IWorkspace workspace = root.getWorkspace();
        Map<String, IJavaProject> javaProjects = new HashMap<>();

        System.out.println("Nr. of projects: " + javaProjects.size());

        for(IProject project : workspace.getProjects()) {
            if(project.isOpen() && isJavaProject(project)) {
                IJavaProject javaProject = JavaCore.create(project);
                javaProjects.put(project.getName(), javaProject);
            }
        }

        System.out.println("Nr. of Java projects: " + javaProjects.size());
    } catch (CoreException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

我首先打印整个项目的数量,然后打印Java个项目的数量。但是,两个输出都是0.这是由于运行Plug-in Test时空工作空间。我的问题是:如何设置Plug-in Test工作区以包含项目?我是否必须在Launch Configuration中执行此操作,还是可以在某个地方以编程方式添加它们?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

  • 使用创建项目句柄 org.eclipse.core.resources.IWorkspaceRoot.getProject(String)(返回 的IProject)
  • 加载准备好的项目说明: org.eclipse.core.resources.IWorkspace.loadProjectDescription(IPATH) (返回IProjectDescription,将.project文件的路径作为参数)
  • 实际上在工作区中创建项目引用: org.eclipse.core.resources.IProject.create(IProjectDescription, IProgressMonitor的)
  • 打开项目:org.eclipse.core.resources.IProject.open(int, IProgressMonitor的)

示例:org.eclipse.ui.internal.wizards.datatransfer.WizardProjectsImportPage.createExistingProject(ProjectRecord,IProgressMonitor)。它显示了如何复制源项目,以便单元测试不会更改它。您可以从头开始创建一个项目描述,而不是使用precreated(例如Eclipse)项目描述。