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

Vit*_*liy 15 unit-testing jar maven

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

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

Ste*_*lly 9

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

这在很大程度上是无法识别测试的情况.

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

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

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

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

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


mac*_*mac 5

对于更新的surefire和failsafe插件,这实际上可以很好地工作,请参阅相关问题:

因此,您无需再拆开jar包,只需提供要扫描的依赖项的组和工件ID(这适用于“ main jar”依赖项以及“ test-jar”依赖项)