【问题标题】:Run a JUnit test from an Eclipse Plugin and accessing the result从 Eclipse 插件运行 JUnit 测试并访问结果
【发布时间】:2014-05-13 21:45:15
【问题描述】:

我正在尝试为 Eclipse 创建一个插件。 我想要做的是从工作区访问 JUnit 测试并通过插件运行它。 到目前为止,我已经设法使用 ILaunchConfiguration 运行它,但我不知道如何收集运行结果。 由于我想多次运行相同的测试并在两者之间进行微小的更改,我想知道是否有另一种方法来运行测试并通过插件轻松收集结果?

到目前为止,我已经尝试过使用:

IProject project = ResourcesPlugin.getWorkspace().getRoot().getProjects()[0];

用于从工作区获取项目。但是,我遇到了能够将其作为 JUnit 测试运行的问题。

我设法运行测试的方式是使用

ILaunchConfiguration configuration = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurations()[1];

然后通过调用来运行它

configuration.launch(ILaunchManager.RUN_MODE, null);

虽然我从来没有设法收集到结果

【问题讨论】:

  • 欢迎来到 StackOverflow。如果您能提供一些关于您已经尝试过的信息,我们会觉得很有帮助。请编辑您的问题以包含此信息。

标签: java eclipse junit eclipse-plugin


【解决方案1】:

一种解决方案是注册org.eclipse.jdt.junit.TestRunListener。您可以通过使用org.eclipse.jdt.junit.testRunListeners 扩展点来注册您自己的TestRunListener 类来做到这一点。

您的 TestRunListener 侦听包括 JUnit 会话结束的事件,您可以在其中保存对该会话的引用。

class MyTestRunListener extends TestRunListener {

    public void sessionFinished(ITestRunSession session) {

        // Do something with session - save it away to a collection, for example.

    }




}

【讨论】:

  • 感谢您的回答。我正在尝试这个,但每当我调用类时,我都会收到 java.lang.ClassNotFoundException
  • 您能否更清楚地说明您要调用的内容以及 ClassNotFoundException 未能找到的内容?
  • 我尝试在启动 ILaunchConfiguration 的同一类中创建 MyTestRunListener 的实例。 ClassNotFoundException 指的是 org.eclipse.jdt.junit.TestRunListener
  • 您不需要创建任何 MyTestRunListener 实例 - 如果您已在 plugin.xml 中将 MyTestRunListener 注册为 org.eclipse.jdt.junit.testRunListeners,Eclipse 扩展框架将创建它并为您注册。或者,如果您想以编程方式创建和注册自己的,则可以调用 JUnitCore.addTestRunListener(TestRunListener)。对于其中任何一个,您都需要确保将 org.eclipse.jdt.junit 添加到插件所需的包中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多