6

可能我正在失去理智,但是今天早上当我升级到 Eclipse Kepler 时,我尝试同时为多个 Eclipse 项目运行单元测试但失败了。我选择了多个项目,打开右键菜单,“运行方式...”选项消失了。

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

我现在质疑我的理智是否真的有可能。许多 其他Stack Overflow 问题和其他网站表明这是一项艰巨的任务,如果不是不可能的话。然而,我很确定我最近在做这件事,这让我有点慌张。

那么……这是否可能,无论是在开普勒还是朱诺?谁能推荐一个可能启用该功能的流行插件(我错误地认为这是默认行为)?

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

4

4 回答 4

6

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

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

    @RunWith(ClasspathSuite.class)
    公共类 MySuite

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

于 2013-12-01T15:17:02.070 回答
3

如果您不使用上下文菜单,而是使用键盘快捷键(默认 = Alt-Shift-X T),您将看到以下对话框:

在此处输入图像描述

这是关于为什么 Eclipse 没有在菜单中显示该选项的提示——它认为没有测试。这显然是错误的。

挖掘(第 160-191 行)的Eclipse 源代码,我发现了这一点:JUnitLaunchShortcut

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 月以来就没有更改过。因此,如果您设法使用更新的版本执行此操作,您很可能安装了某种插件来让您执行此操作。

于 2015-10-28T15:30:41.003 回答
1

奇怪的是,安装 C 开发人员工具为您提供了一个允许您运行多个组的功能。请参阅http://wiki.eclipse.org/CDT/User/FAQ#HOWTO_use_C.2FC.2B.2B_Unit_Testing_Support

于 2014-08-04T19:51:28.853 回答
1

您不能在 Eclipse 中运行多个项目的测试,至少使用普通的运行器。但是,有多种选择:

  1. 创建一个运行一切的 ant/maven 脚本
  2. 如果您想在每次保存时都运行测试,您可以使用Infinitest

来自 Infinitest 的网站:

Infinitest 是 Eclipse 和 IntelliJ 的持续测试插件。每次对源代码进行更改时,Infinitest 都会运行所有可能因这些更改而失败的测试。

Infinitest 可以潜在地运行所有项目中的所有测试。

于 2013-06-27T11:16:41.210 回答