我正在为Eclipse开发,一个功能是运行JUnit测试。现在我的插件检测工作区中项目的JUnit测试,之后我想调用JUnit来运行这个测试。
我听说过ILaunch,ILaunchConfigurationDelegate,JUnitLaunchConfigurationDelegate,但我找不到这个例子,而且我也不确定我是否必须使用它!
- 提前致谢
答案 0 :(得分:2)
请参阅我对How does Eclipse actually run Junit tests?的回答。您需要创建一个运行配置,然后使用配置调用JUnitLaunchConfigurationDelegate#launch()。
最简单的方法是向扩展点org.eclipse.debug.ui.launchShortcuts
添加快捷方式。使用正确的configurationType,您可以创建正确的类型,通常,Eclipse将完成剩下的工作。事实上,这正是我们在Scala IDE中所做的。
以下是来自scala-ide的相关XML:
<extension point="org.eclipse.debug.ui.launchShortcuts">
<shortcut
label="%JUnitShortcut.label"
icon="$nl$/icons/full/obj16/julaunch.gif"
helpContextId="org.eclipse.jdt.junit.launch_shortcut"
class="org.eclipse.jdt.junit.launcher.JUnitLaunchShortcut"
modes="run, debug"
id="scala.tools.eclipse.scalatest.junitShortcut">
<contextualLaunch>
<enablement>
<with variable="selection">
<count value="1"/>
<iterate>
<adapt type="org.eclipse.jdt.core.IJavaElement">
<test property="org.eclipse.debug.ui.matchesPattern" value="*.scala"/>
<test property="org.eclipse.jdt.core.isInJavaProject"/>
<test property="org.eclipse.jdt.core.hasTypeOnClasspath" value="junit.framework.Test"/>
<or>
<test property="scala.tools.eclipse.launching.canLaunchAsJUnit" forcePluginActivation="true"/>
<test property="scala.tools.eclipse.launching.junit.canLaunchAsJUnit" forcePluginActivation="true"/>
</or>
</adapt>
</iterate>
</with>
</enablement>
</contextualLaunch>
<configurationType
id="org.eclipse.jdt.junit.launchconfig">
</configurationType>
<description
description="%DebugJUnitLaunchShortcut.description"
mode="debug">
</description>
<description
description="%RunJUnitLaunchShortcut.description"
mode="run">
</description>
</shortcut>
</extension>
重要的元素是&lt; contextualLaunch&gt;,它定义了一组需要为true的测试,以便将作为JUnit启动的选项呈现给用户。其中大多数都是自解释的,但我们也scala.tools.eclipse.launching.canLaunchAsJUnit
,它引用了扩展点org.eclipse.core.expressions.propertyTesters
。这些属性测试人员测试代码是否可以作为JUnit启动(例如,测试中的类扩展了TestCase或其他)。
如果您需要更多详细信息,我建议您下载Scala IDE并查看代码,但它是用Scala编写的。
答案 1 :(得分:0)
我重写了launche junit服务的一部分,然后通知它调用调试并运行的项目。
请参阅我的实现以致电JUnitLaunch