Maven - 在模块中运行JUnit Testsuite

时间:2011-04-06 09:18:27

标签: java unit-testing maven junit4

我有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”类,它是在ProjB之前构建的。

这个问题有解决办法吗? (更改构建顺序不是解决方案)

3 个答案:

答案 0 :(得分:9)

我刚刚找到解决方案:

clean install test -Dtest=myTestSuite -DfailIfNoTests=false 
如果ProjA不包含Test类,

-DfailIfNoTests=false将强制maven继续构建。

这最终解决了我的问题。

答案 1 :(得分:3)

您是否查看了--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

如果有效,请回复并告诉我们!我很好奇。 :)

答案 2 :(得分:0)

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