首页 > 解决方案 > Maven 测试传递范围

问题描述

从 maven文档中,我们得到如果我们的项目 A 的直接依赖项具有范围测试并且其传递依赖项具有范围测试,那么该传递依赖项将不会被纳入我们项目 A 的测试类路径中

[Project A] -> [Direct Dependency of A , say  X (scope test)] -> [Direct dependency of X , say Y (scope test)]

这让我想到了一个场景(可能与否,你决定)

如果我们项目 A 中某些测试的执行依赖于项目 X 中某些测试的代码,那么 maven 将永远无法运行 A 的测试,因为它永远不会在测试类路径中使用 Y。

在这种情况下我们应该怎么做?如果你说这种情况不可能存在,为什么?

标签: javamavenmaven-3dependency-management

解决方案


通常测试不包含在项目的 jar 文件中(否则这些不是测试,而是项目的一部分)。

如果您想在另一个项目中重用测试代码,您应该创建一个包含测试类的单独 jar 文件,并将其放在您的依赖项列表中,范围为“测试”。换句话说,如果你的项目 A 依赖于项目 X,你应该明确指定,不管它是否是测试代码。

有关它的更多信息,请查看:如何创建包含测试类的 jar


推荐阅读