【问题标题】:Running JUnit tests from multiple projects in Eclipse在 Eclipse 中从多个项目运行 JUnit 测试
【发布时间】:2013-06-27 10:50:03
【问题描述】:

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

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

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

那么……这甚至可能在开普勒或朱诺中实现吗?谁能推荐一个可能启用该功能的流行插件(我错误地认为这是默认行为)?

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

【问题讨论】:

  • 您还有可用的运行配置吗?如果是这样,只需为其创建一个配置并运行它。
  • @JREN 抱歉,是的,“运行配置...”选项仍然存在。但是如果我走那条路,我只能为一个项目运行测试,而不是多个项目。
  • 应该有一个可用的单选按钮,上面写着“在选定的项目、包或源文件夹中运行所有测试:”如果您选择了 2 个项目,它应该为这两个项目运行所有单元测试。它至少对我有用:-/。我正在使用 Eclipse Juno
  • @JREN,你能描述一下你是怎么做的吗?那里的 Select... 按钮不允许多选,您只能选择一个项目、包或文件夹。

标签: java eclipse junit


【解决方案1】:

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

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

    @RunWith(ClasspathSuite.class)
    公共课 MySuite

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

【讨论】:

    【解决方案2】:

    如果您不使用上下文菜单,而是使用键盘快捷键(默认 = 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>
    

    开头的&lt;count value="1"/&gt; 位用作选择器,它的含义相同:您必须只选择一个 项,否则菜单项将不会显示。

    我想我们已经找到了问题:)

    我还检查了这两个文件的历史记录,它们自 2006 年 9 月以来就没有更改过。因此,如果您设法使用更新的版本进行此操作,您很可能安装了某种插件,可以让您执行此操作.

    【讨论】:

      【解决方案3】:

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

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

      来自 Infinitest 的网站:

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

      Infinitest 可能会运行所有项目中的所有测试。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-05
          • 2010-10-13
          • 2011-04-04
          • 2010-09-29
          • 2012-08-23
          • 2017-08-09
          相关资源
          最近更新 更多