【问题标题】:How to run a single test package and its subpackages in eclipse?如何在 Eclipse 中运行单个测试包及其子包?
【发布时间】:2025-12-04 14:50:01
【问题描述】:

我有一个 Java/Maven 项目,我的测试在 src/test/java 下。我有两个包集成,每个包都有子包。我想在单元包及其子包中运行所有测试。

我正在使用 JUnit4 和 Eclipse Kepler SR2。

我知道右键单击 -> 按它应该运行的方式运行,但不知何故 Eclipse 找不到任何测试。

这行得通:

  • 单独运行每个测试
  • 通过右键单击 src/test/java 运行所有测试 -> 运行方式。
  • 仅使用 mvn test 运行单元测试(使用 surefire 插件)

但是我想为 Eclipse 使用一些代码覆盖插件,为此我需要在没有集成测试的情况下在 Eclipse 中运行测试。而且这不是覆盖工具的问题,vanillia run as junit test 也不行。

测试类被编译为目标/测试类。他们在那里:-/

所以有什么建议是什么原因造成的?

编辑:

好吧,似乎 Eclipse 只直接在选定的包中执行测试。如何在子包中执行测试?

【问题讨论】:

    标签: java eclipse unit-testing maven junit


    【解决方案1】:

    我不确定 Eclipse 的细节,但您可以尝试一个测试套件,并设置为运行它。它可能比包更容易指向。

    @RunWith(Suite.class)
    @SuiteClasses({
        unit.OneClass.class, 
        unit.TwoClass.class
    })
    public class UnitTestSuite {
    

    【讨论】:

      【解决方案2】:

      您正在尝试做的事情(通过右键单击它来运行包中的所有测试)原则上应该有效。当然在 Eclipse Kepler SR2 中对我有用。

      如果它不起作用,大概是以下原因之一:

      • Eclipse 旧版本
      • 安装损坏
      • 损坏的项目
      • 错误的类路径设置
      • junit3/4 之间有些不一致
      • 点击了错误的东西

      【讨论】:

      • 我正在使用 Eclipse Kepler SR2。项目本身运行,与 maven 完美构建。点击错误的东西肯定不是 XD
      • “项目”和“类路径”是指 Eclipse 用来存储 Java 项目配置的 .project 和 .classpath 文件。 Maven 永远不会读取它们(使用 m2e 它会选择性地写入它们)。因此,如果它在 maven 中工作,那就更有可能出现问题。
      • .classpath 和 .project 看起来不错。在另一个项目中,我可以在包上执行...
      【解决方案3】:

      您可以尝试使用 cobertura。您有 maven 项目,因此在项目级别使用 MAVEN 命令 mvn cobertura:cobertura 会生成 /target/site/cobertura/index.html 下的代码覆盖率

      但是,还有一个插件名称为 eclemma,这可能会有所帮助。

      【讨论】: