17

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

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

4

3 回答 3

11

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

这主要是无法识别测试的情况。

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

  1. 使用列出来自 test-jar 的所有测试的测试套件。因为测试套件将在 src/test/java 中(更准确地说是编译成 target/test-classes)将被拾取并且套件中的所有测试都将由 Surefire/failsafe 运行(假设套件类名称匹配包含规则:以 Test 开头或结尾)

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

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

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

于 2012-09-03T06:20:07.833 回答
7

这实际上适用于较新的surefire和failsafe插件,请参阅相关问题:

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

于 2015-01-25T04:02:35.067 回答
1

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

于 2012-09-03T06:06:01.640 回答