【问题标题】:Maven - Run JUnit Testsuite in moduleMaven - 在模块中运行 JUnit 测试套件
【发布时间】:2011-04-06 09:18:27
【问题描述】:

我有 3 个项目:

  • ParentProj(A+B 的父项)
  • ProjA(是 ParentProj 的一个模块,包含源代码)
  • ProjB(是 ParentProj 的一个模块,包含源代码和测试)

构建顺序为:1. ParentProj,2. ProjA,3. ProjB(无法更改!)

我想告诉 maven 执行位于 ProjB 中的 TestSuite。 如果我使用以下命令运行构建:mvn clean -e test -Dtest=AllServiceTests,构建将失败,因为 maven 在 ProjA 中找不到“AllServiceTests”-class,它是在 ProjB 之前构建的。

这个问题有什么解决办法吗? (改变构建顺序是没有办法的)

【问题讨论】:

    标签: java unit-testing maven junit4


    【解决方案1】:

    我刚刚找到了解决方案:

    clean install test -Dtest=myTestSuite -DfailIfNoTests=false 
    

    如果 ProjA 不包含测试类,-DfailIfNoTests=false 将强制 maven 继续构建。

    这终于解决了我的问题。

    【讨论】:

      【解决方案2】:

      您是否查看过--also-make--projects 选项?

      $ mvn --help
      
      usage: mvn [options] [<goal(s)>] [<phase(s)>]
      
      Options:
       -am,--also-make                        If project list is specified, also
                                              build projects required by the
                                              list
      
       -pl,--projects <arg>                   Comma-delimited list of specified
                                              reactor projects to build instead
                                              of all projects. A project can be
                                              specified by [groupId]:artifactId
                                              or by its relative path.
      

      那么我想这可能会起作用:

      mvn clean test -pl ProjB -am -Dtest=AllServiceTests
      

      请回帖,让我们知道这是否有效!我真的很好奇。 :)

      【讨论】:

        【解决方案3】:

        最简单的解决方案是切换到 ProjB 目录并在那里执行你的命令行。

        【讨论】:

        • 好吧,这不是解决方案,因为夜间构建是在 Bamboo 服务器上完成的,而不是在我的本地命令行上 ;-)
        猜你喜欢
        • 2012-12-04
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        • 2021-12-16
        • 2018-09-02
        相关资源
        最近更新 更多