如何配置pom来运行jar中打包的测试?

时间:2012-09-02 17:24:34

标签: unit-testing maven jar

我有一个maven构建过程,可以将可执行jar及其测试发布到Nexus。 我有另一个maven构建过程需要访问这些jar(可执行文件+测试)并运行测试。

我该如何解决?到目前为止,只有当jar被分解为类文件时,我才设法做到这一点。 我是maven的新手,完全迷失在文档中。

3 个答案:

答案 0 :(得分:9)

Surefire和failsafe目前不支持在jar中运行测试。

这主要是因为无法识别测试。

有两种方法可以让测试运行。

  1. 使用测试套件列出test-jar中的所有测试。因为测试套件将在src / test / java中(更正确地将编译成目标/测试类)将被拾取并且套件中的所有测试将由Surefire / failsafe运行(假设套件类名称)匹配包含规则:以测试开始或结束)

  2. 使用maven依赖插件的unpack-dependencies目标将test-jar解压缩到target / test-classes(这种hack的尖叫,但效果很好)

  3. 第一个选项的主要问题是你不能轻易地从套件中运行一个测试,你需要从test-jar命名每个测试

    出于这个原因,我倾向于支持选项2 ...还有一个额外的好处,即选项2并不意味着编写代码来解决构建工具插件中的限制...你将自己锁定到特定构建的次数越少工具,更好的恕我直言

答案 1 :(得分:4)

这对于较新的surefire和故障安全插件实际上工作得很好,请参阅相关问题:

因此您不再需要解压缩jar,只需提供要扫描的依赖项的组和工件ID(这适用于“主jar”依赖项,以及“test-jar”依赖项)< / p>

答案 2 :(得分:0)

附加的test-jar可以在其他项目中用作通常的依赖项,它支持在测试区域中重用代码,但是你不能在jar中运行测试。如果你真的需要解决方案,你必须至少写一个套件(等等?)从jar开始测试。