【发布时间】:2020-12-26 11:46:50
【问题描述】:
假设我有多个java项目,都使用maven:Project A和Project B
-
项目 A 是一个库
-
Project B是一个使用Project A
的应用程序
两个项目同时开发。 Project A 的新要求已通过 Project B 的新版本得到满足。
我主要是手动测试我的代码 - 正如预期的那样 - 产生的代码覆盖率和质量都低于最佳水平。
因此,我目前正在研究使用 Junit 为我的项目编写测试。由于 Project A 主要定义接口,因此我必须 - 至少我相信如此 - 在测试代码中编写这些类的实现。
由于我已经在 Project B 中定义了这些接口的实现,我想我可以在 Project A 中使用 Project B 作为 test 依赖项>,乍一看这很有意义,因为 Project A 的几乎所有功能都在这些实现中使用,因为我(至少目前)不会在 Project A 未在 项目 B 中使用(请记住:这可能会在未来的项目中发生变化,例如 新创建的项目 C,这也可能取决于项目 A)。
另一方面,这会产生某种循环依赖。在 Project B 的 pom.xml 中,我将定义对 Project A 的常规依赖,而 Project A 将依赖于 test-scope 中的项目 B。
因此提出以下问题:
- 这在技术上是否可行,或者我是否会从一开始或以后遇到循环依赖问题? (我相信我见过有人在做类似的事情,他们必须在 Project A 的
<dependencyManagement>部分中定义正确版本的 Project A 以确保当前代码是在测试时使用的,而不是 Project B 中定义的版本。虽然我找不到它了,所以我无法验证这一点,但我记得对为什么他们感到困惑将在该部分定义他们自己的项目版本。编辑:我相信我又找到了它,但它似乎是别的东西,我可能只是在研究 junit 和测试时有点困惑;) ) - 是否需要为测试用例的类使用下游项目,或者我以后可能会遇到问题? (我的第一个想法是,一旦我在 Project B 中将 Project A 替换为第三方依赖项,我就会遇到问题,因此丢失了我所有的测试用例项目 A)
【问题讨论】:
标签: java maven testing dependencies code-coverage