对测试对象使用依赖项目

Using a dependent project for test objects

假设我有多个java个项目,它们都使用maven:项目A和项目B

两个项目同时开发。 项目 A 的新要求已通过 项目 B 的新版本得到满足。

我主要是手动测试我的代码,正如预期的那样,产生的代码覆盖率和质量都低于最佳水平。

因此,我目前正在考虑使用 Junit 为我的项目编写测试。由于 项目 A 主要定义接口,我将不得不 - 至少我相信 - 在测试代码中编写这些 类 的实现。

因为我已经实现了 Project B 中定义的那些接口,所以我想我可以使用 Project B 作为 test Project A 中的依赖项,乍一看非常合理,因为在这些实现中几乎使用了 Project A 的所有功能,就像我一样(至少现在)不要在 项目 A 中开发未在 项目 B 中使用的功能(请记住:这未来的项目可能会发生变化,例如 新创建的项目 C,它可能还取决于 项目 A)。

另一方面,这会产生某种循环依赖。在项目Bpom.xml中,我会定义对项目A的常规依赖,而项目A 将依赖于 test 范围内的 项目 B

因此提出以下问题:

不,这不是个好主意。

首先,你创建了循环依赖。其次,你不测试你想测试的,即项目A(不是项目B)。

那么,你打算怎么办?

首先想想,如果同时开发两个独立的项目A和B是否真的明智。您可以将它们放入多模块项目中。

其次,如果A主要是接口,那么测试B(与A集成)而不是单独测试A可能更明智。如果你发现A中有值得测试的东西,你可以使用mocking(比如mockito)来模拟你测试中出现的接口。