我可能会失去理智,但今天早上当我升级到Eclipse Kepler时,我试图同时为多个Eclipse项目运行单元测试并且失败了。我选择了多个项目,打开了右键菜单,“Run as ...”选项不见了。
“该死的开普勒!”我想,并启动我的旧Juno安装,以说服自己行为已经改变。但是,它在那里也没有用。我现在正在质疑我对这是否真的有可能的理智。 Many other Stack Overflow问题和其他sites表明这是一项艰巨的任务,如果不是不可能的话。但是,我很确定我最近这样做是因为它让我感到有点慌乱。
所以......在开普勒或朱诺这个甚至是可能的吗?任何人都可以建议一个可能启用该功能的流行插件(我错误地认为是默认行为)?
背景:我有一个通过m2e管理的多模块Maven项目,预计我可以选择几个项目并运行所有单元测试。
答案 0 :(得分:6)
您可以使用Classpath Suite跨多个项目执行JUnit测试。 一般来说,您需要做的就是:
写一个套件:
@RunWith(ClasspathSuite.class)
公共课MySuite
看一下这篇文章:Roger Rabbit - JUnit Tests Runner Across Multiple Projects, 它包括一步一步的示例和代码示例。
答案 1 :(得分:1)
您无法在Eclipse中运行多个项目的测试,至少使用普通的跑步者。但是有很多选择:
来自Infinitest的网站:
Infinitest是Eclipse和IntelliJ的Continuous Testing插件。每次对源代码进行更改时,Infinitest都会运行因这些更改而可能失败的所有测试。
Infinitest可以在所有项目中运行所有测试。
答案 2 :(得分:1)
奇怪的是,安装C开发人员工具为您提供了一项功能,可让您运行多个组。见http://wiki.eclipse.org/CDT/User/FAQ#HOWTO_use_C.2FC.2B.2B_Unit_Testing_Support
答案 3 :(得分:1)
如果您使用键盘快捷键(默认= Alt-Shift-X
T
)而不是使用上下文菜单,则会出现以下对话框:
这是关于为什么Eclipse没有在菜单中显示选项的提示 - 它认为没有测试。这显然是错误的。
通过Eclipse source code for JUnitLaunchShortcut
(第160-191行),我发现了这个:
private void launch(Object[] elements, String mode) {
try {
IJavaElement elementToLaunch= null;
if (elements.length == 1) {
...
}
if (elementToLaunch == null) {
showNoTestsFoundDialog();
return;
}
仅当您选择一个测试类时才有效。
菜单选项可见性由org.eclipse.jdt.junit
插件配置(plugin.xml
)控制,并且具有相同的问题(第221-234行):
<contextualLaunch>
<enablement>
<with variable="selection">
<count value="1"/>
<iterate>
<adapt type="org.eclipse.jdt.core.IJavaElement">
<test property="org.eclipse.jdt.core.isInJavaProject"/>
<test property="org.eclipse.jdt.core.hasTypeOnClasspath" value="junit.framework.Test"/>
<test property="org.eclipse.jdt.junit.canLaunchAsJUnit" forcePluginActivation="true"/>
</adapt>
</iterate>
</with>
</enablement>
</contextualLaunch>
开头的<count value="1"/>
位充当选择器,它意味着同样的事情:您必须选择一个项,否则菜单项将不会显示
我认为我们已经找到了问题:)
我还检查了这两个文件的历史记录,自2006年9月以来它们一直没有更改过。所以如果你设法用更新的版本做到这一点,你很可能已经安装了某种插件,可以让你这样做