【问题标题】:Setup Eclipse Workspace in Java Code在 Java 代码中设置 Eclipse 工作区
【发布时间】:2015-01-05 22:38:16
【问题描述】:

我正在写一个JUnit Plug-In Test,它将从WorkSpace 中打开一个Java Project,并将其传递给第三方库进行进一步处理。这是我目前所拥有的:

@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 中执行此操作,或者我可以在某个地方以编程方式将它们添加到测试中?感谢您的帮助!

【问题讨论】:

  • 您可以通过编程方式创建项目,但这是相当多的代码。您可以打开 Eclipse,指定“插件测试”工作区并使用 Eclipse 创建它们。
  • 正如 Greg 所说,在 Eclipse 中手动创建项目是一个不错的选择。您甚至可以压缩项目并让您的测试提取并打开它。如果您确实想以编程方式创建它,那么 JavaProjectWizard 类有您需要的代码。
  • @greg-449 非常感谢您的帮助!您能否给我一个简短的链接,我可以在其中找到更多详细信息或提供有关如何执行此操作的说明的小列表?再次感谢!
  • 不应手动准备单元测试的重复、可变环境。

标签: java eclipse junit eclipse-plugin


【解决方案1】:
  • 创建一个项目句柄 org.eclipse.core.resources.IWorkspaceRoot.getProject(String)(返回 项目)
  • 加载准备好的项目描述: 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)。它展示了如何复制源项目,以便单元测试不会改变它。您可以从头开始创建一个项目描述,而不是使用预先创建的(例如使用 Eclipse)项目描述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    相关资源
    最近更新 更多