假设我有多个java项目,都使用maven:Project A和Project B
项目 A 是一个图书馆
Project B 是一个使用 Project A
的应用程序两个项目是同时开发的。 项目 B 的新版本满足了项目 A 的新要求。
我主要是手动测试我的代码 - 正如预期的那样 - 产生的代码覆盖率和质量都低于最佳。
因此,我目前正在考虑使用 Junit 为我的项目编写测试。由于项目 A 主要定义接口,因此我必须——至少我相信是这样——在测试代码中编写这些类的实现。
因为我已经在项目 B 中定义了这些接口的实现,所以我想我可以使用 项目 B 作为 项目 A< 中的 test
依赖项/strong>,乍一看很有意义,因为在这些实现中几乎使用了 Project A 的所有功能,因为我(至少现在)不会在 Project 中开发功能项目 B 中未使用的 A(请记住:这可能会在未来的项目中发生变化,例如新创建的项目 C,这也可能取决于项目 A)。
另一方面,这会产生某种循环依赖。在Project B 的pom.xml
中,我将定义对Project A 的常规依赖,而Project A 将依赖于项目 B 在 test
范围内。
因此有以下问题:
<dependencyManagement>
部分定义正确版本的 Project A确保在测试时使用当前代码,而不是项目 B 中定义的版本。虽然我找不到了,所以我无法验证这一点,但我记得对为什么他们会在该部分定义自己的项目版本。编辑:我相信我又找到了它,但它似乎是别的东西,我可能只是在研究 junit 时有点困惑和测试 ;) )答案 0 :(得分:3)
不,这不是个好主意。
首先,您创建循环依赖项。其次,你不测试你想测试的东西,即项目A(不是项目B)。
那么,你打算怎么做?
首先,想想如果同时开发两个独立的项目A和B是否真的明智。你可以把它们放到一个多模块项目中。
其次,如果 A 主要是接口,那么测试 B(与 A 集成)可能更明智,而不是单独测试 A。如果您发现 A 中有值得测试的东西,您可以使用 mocking(如 mockito)来模拟测试中出现的接口。