Пожалуйста, посмотрите мой ответ на Как Eclipse фактически выполняет тесты Junit? .Вам нужно будет создать конфигурацию запуска, а затем вызвать JUnitLaunchConfigurationDelegate # launch () с конфигурацией.
Самый простой способ сделать это - добавить ярлыки к точке расширения org.eclipse.debug.ui.launchShortcuts
.С правильной конфигурациейType вы можете создать правильный тип, и обычно Eclipse сделает все остальное.На самом деле это именно то, что мы сделали в Scala IDE .
Вот соответствующий XML из scala-ide:
<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>
Важным элементом является , который определяет набор тестов, которые должны быть истинными, чтобы опциязапускать как JUnit, представленный пользователю.Большинство из них говорят сами за себя, но мы также scala.tools.eclipse.launching.canLaunchAsJUnit
, который ссылается на точку расширения org.eclipse.core.expressions.propertyTesters
.Эти тестеры свойств проверяют, может ли код быть запущен как JUnit или нет (например, тестируемый класс расширяет TestCase или что-либо еще).
Если вам нужна дополнительная информация, я рекомендую загрузить Scala IDE и глядя на код, но он написан на Scala.