gpt4 book ai didi

java - 如何设置 Eclipse JUnit 插件测试环境

转载 作者:行者123 更新时间:2023-12-01 11:23:09 26 4
gpt4 key购买 nike

有几个问题,例如this one其中涉及运行 Eclipse JUnit 插件测试的主题,但我无法找到如何触发我正在测试的插件的某些方面的示例。

我关注了this documentation其中提到了测试工具,但我没有找到有关该工具的更多文档。我可以将 JUnit 测试作为 Eclipse 插件测试运行,但我不确定如何让它们做有用的事情。

在这种背景下,以下是我的具体问题:

  • 如何设置调用被测插件的上下文(例如“选择了 IResource xyz”)?
  • 如何获取正在测试的插件的句柄以调用它?我假设有一种方法可以调用它的扩展之一?
  • 我可以通过编程方式将资源注入(inject) Eclipse JUnit Test 工作区吗?

最佳答案

我已经成功地完成了大部分工作,以下是我的步骤和一些示例代码,供感兴趣的人使用:

  1. 需要在 Eclipse 插件项目中定义插件测试。我更喜欢在与我正在测试的插件不同的项目中执行此操作。如果您采用此方法,则需要将您正在测试的插件添加为依赖项。

  2. 您可以像常规 JUnit 测试类一样创建测试类。

  3. 您可以使用“作为 JUnit 插件测试运行”运行配置来运行测试类。 (右键单击 --> 运行方式 --> JUnit 插件测试)。这将创建一个新的 Eclipse 实例并在其中运行您的测试。

下面是一些测试示例代码,它使用测试插件 src 目录中的内容在 junit 工作区中创建一些资源,然后进行一些断言。

设置资源:

package org.sampletest;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.IJobChangeListener;
import org.eclipse.core.runtime.jobs.IJobManager;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IWorkbench;
import org.junit.Test;

import com.example.myplugin.MyPlugin

public class MyPluginTest{

@Test
public void testMyPlugin() throws Exception{
// assume an empty workspace - "Run as JUnit Plugin Test can be configured to clear the workspace before each run.
String name = "myPluginTestProject";
IProjectDescription = ResourcesPlugin.getWorkspace().newProjectDescription(name);
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name);
project.create(desc, new NullProgressMonitor());
project.open(new NullProgressMonitor());
IFile file = project.getFile("myPluginTestFile");
InputStream source = getClass().getClassLoader().getResourceAsStream("sampleFile");
file.create(source, IFile.FORCE, null);

// Assuming MyPlugin has some operation on an IStructuredSelection
MyPlugin plugin = new MyPlugin();
IStructuredSelection selection = new StructuredSelection(file);
plugin.invoke(selection);

// Make some assertions...
}
}

关于java - 如何设置 Eclipse JUnit 插件测试环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030347/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com