我编写了一个自定义JUnit运行器,我希望成为eclipse插件的一部分,该插件将使用此运行器启动测试,而不必将@RunWith注释应用于班上。我使用org.eclipse.debug.ui.launchShortcuts扩展点设法在'Run As'上下文菜单下获得了一个额外的项目。但是,我不确定如何使用我的自定义亚军来调用测试。使用自定义JUnit运行器实现从eclipse插件启动JUnit测试
2
A
回答
3
所以我想出了一个办法去做我想要的。但是,它看起来有点冒险。但是,我认为我会在这里发布答案,以防其他人遇到同样的问题。
首先,你必须注册一个JUnit一种这样的:
<extension point="org.eclipse.jdt.junit.internal_testKinds">
<kind
id="my.junit.kind"
displayName="Your Kind Name"
finderClass="org.eclipse.jdt.internal.junit.launcher.JUnit4TestFinder"
loaderPluginId="org.eclipse.jdt.junit4.runtime"
loaderClass="your.test.loader.MyLoaderClass">
<runtimeClasspathEntry pluginId="org.eclipse.jdt.junit4.runtime" />
<runtimeClasspathEntry pluginId="org.eclipse.jdt.junit.core" />
<runtimeClasspathEntry pluginId="org.eclipse.jdt.junit.runtime"/>
</kind>
</extension>
在XML必须指定的org.eclipse.jdt.internal.junit.runner.ITestLoader
自定义实现这反过来又返回org.eclipse.jdt.internal.junit.runner.ITestReference
的实现。核心部分是ITestReference的实现,因为这是您创建自定义JUnit运行器实例的地方。
public class MyTestReference extends JUnit4TestReference
{
public MyTestReference(final Class<?> p_clazz, String[] p_failureNames)
{
super(new Request()
{
@Override
public Runner getRunner()
{
return new MyCustomRunner(p_clazz);
}
}, p_failureNames);
}
...
}
然后最后你有一个启动快捷键设置的那种适当
public class MyJunitLaunchShortcut extends JUnitLaunchShortcut
{
@Override
protected ILaunchConfigurationWorkingCopy createLaunchConfiguration(IJavaElement p_element) throws CoreException
{
ILaunchConfigurationWorkingCopy config = super.createLaunchConfiguration(p_element);
config.setAttribute(JUnitLaunchConfigurationConstants.ATTR_TEST_RUNNER_KIND, "my.junit.kind");
return config;
}
}
这确实使用了一堆内部类的链接这一点,所以有可能是一个更好的办法。但是,这似乎工作。
相关问题
- 1. JUnit测试自定义Eclipse构建器
- 2. 运行JUnit插件测试时防止启动eclipse GUI
- 3. 写eclipse junit插件测试
- 4. Eclipse如何实际运行Junit测试?
- 5. 如何使用JMock运行JUnit Eclipse插件测试?
- 6. 如何使用eclipse中的Ant运行Junit插件测试
- 7. 运行JUnit测试套件在Eclipse
- 8. 从junit测试启动jmeter
- 9. 从Eclipse插件运行JUnit测试并访问结果
- 10. Buckminster:运行JUnit插件测试headless
- 11. java.lang.NoClassDefFoundError运行JUnit插件时,测试
- 12. JUnit无法启动JUnit插件测试。为什么?
- 13. Junit测试用例生成器(JUB)插件Eclipse for Junit测试用例自动化
- 14. 使用JUnit进行自动化测试
- 15. 使用Maven运行JUnit测试套件
- 16. 在Eclipse的JUnit运行使用JUnit @rule
- 17. 如何为SureFire Maven插件指定JUnit自定义运行器?
- 18. ClassNotFoundException:在Eclipse中运行JUnit测试
- 19. 无法在Eclipse中运行junit测试
- 20. Eclipse grails作为JUnit测试运行
- 21. 从另一个JUnit测试类运行JUnit测试类
- 22. 运行Eclipse插件的测试与JMockit和JUnit 3
- 23. 使用@SpringApplicationConfiguration进行JUnit测试自动启动作业
- 24. 使用Eclipse进行单元测试 - JUNIT
- 25. 在Eclipse中提交之前自动运行JUnit测试
- 26. 启动时出现IllegalStateException Spring JUnit测试
- 27. 如何从命令行运行Eclipse java JUnit测试套件? (windows)
- 28. 使用JUnit测试树实现
- 29. JUnit测试java eclipse
- 30. 并行运行JUnit测试
请问我的答案'Eclipse如何实际运行测试'http://stackoverflow.com/a/7896628/1836帮助? –
我曾看过那篇文章,这是什么让我这么远。我已经能够通过实现ITestReference,使用internal_kind扩展点以及解开一堆内部类来获得它的工作。但是,这似乎比它应该更复杂!为什么RemoteTestRunner只有一个参数来指定junit亚军!? – ekj