从Eclipse中的多个项目运行JUnit测试

时间:2013-06-27 10:50:04

标签: java eclipse junit

我可能会失去理智,但今天早上当我升级到Eclipse Kepler时,我试图同时为多个Eclipse项目运行单元测试并且失败了。我选择了多个项目,打开了右键菜单,“Run as ...”选项不见了。

“该死的开普勒!”我想,并启动我的旧Juno安装,以说服自己行为已经改变。但是,它在那里也没有用。

我现在正在质疑我对这是否真的有可能的理智。 Many other Stack Overflow问题和其他sites表明这是一项艰巨的任务,如果不是不可能的话。但是,我很确定我最近这样做是因为它让我感到有点慌乱。

所以......在开普勒或朱诺这个甚至是可能的吗?任何人都可以建议一个可能启用该功能的流行插件(我错误地认为是默认行为)?

背景:我有一个通过m2e管理的多模块Maven项目,预计我可以选择几个项目并运行所有单元测试

4 个答案:

答案 0 :(得分:6)

您可以使用Classpath Suite跨多个项目执行JUnit测试。 一般来说,您需要做的就是:

  1. 根据您要测试的所有项目创建Eclipse项目。
  2. 写一个套件:

    @RunWith(ClasspathSuite.class)
    公共课MySuite

  3. 看一下这篇文章:Roger Rabbit - JUnit Tests Runner Across Multiple Projects, 它包括一步一步的示例和代码示例。

答案 1 :(得分:1)

您无法在Eclipse中运行多个项目的测试,至少使用普通的跑步者。但是有很多选择:

  1. 创建一个运行所有内容的ant / maven脚本
  2. 如果您想在每次保存时运行测试,可以使用Infinitest
  3. 来自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)而不是使用上下文菜单,则会出现以下对话框:

enter image description here

这是关于为什么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月以来它们一直没有更改过。所以如果你设法用更新的版本做到这一点,你很可能已经安装了某种插件,可以让你这样做