Eclipse plugin 如何使用SWTBot启动特定项目

Eclipse plugin 如何使用SWTBot启动特定项目,eclipse-plugin,eclipse-cdt,swtbot,Eclipse Plugin,Eclipse Cdt,Swtbot,不是每个插件都可以在没有project的情况下进行测试。例如,我想测试CDT插件,因此我需要导入一个C项目。但在运行配置中并没有这一点,当我试图通过SWT插件记录导入操作时,测试记录器SWTBot无法在之后重播它们。谷歌对这个话题保持沉默。如何做到这一点?一个很好的方法是使用eclipse资源模型 看看这个包裹 org.eclipse.core.resources 下面是一个在工作区中创建新项目的方法 private IProject getNewOpenProject(IWorkspace

不是每个插件都可以在没有project的情况下进行测试。例如,我想测试CDT插件,因此我需要导入一个C项目。但在运行配置中并没有这一点,当我试图通过SWT插件记录导入操作时,测试记录器SWTBot无法在之后重播它们。谷歌对这个话题保持沉默。如何做到这一点?

一个很好的方法是使用eclipse资源模型 看看这个包裹

org.eclipse.core.resources
下面是一个在工作区中创建新项目的方法

private IProject getNewOpenProject(IWorkspace wks, String name)
        throws CoreException {
    System.out.print("Creating project " + name + "...");
    IProjectDescription prj1ProjectDescription = wks
            .newProjectDescription(name);
    IProject prj = wks.getRoot().getProject(name);
    prj.create(prj1ProjectDescription, null);
    prj.open(null);
    System.out.println("    [OK]");
    return prj;
}
此方法将您的内容导入eclipse项目

private void importDirIntoProject(File srcPath, IProject prj,
        IOverwriteQuery overwriteQuery) throws InvocationTargetException,
        InterruptedException {
    ImportOperation op = new ImportOperation(prj.getFullPath(), srcPath,
            FileSystemStructureProvider.INSTANCE, overwriteQuery);
    op.setCreateContainerStructure(false);
    op.run(new NullProgressMonitor());
}

这种方法使用本机eclipse机制。我认为这比在SWTBot上使用不方便的方法要好。

您的测试有责任在其设置方法中创建必要的资源,并在设置后清理它们。它不是在运行配置中配置的,而是在测试中编码的

您可以使用SWTBot导入/创建C项目,也可以使用beanie建议的项目API