我应该将共享测试实用程序放在多模块 Maven 项目中的什么位置?

Han*_*etz 5 java osgi maven-2 packages

我可能不会太在意这个,但我的项目有一个我非常喜欢的非常结构化的布局。拥有这么多结构实际上已经证明是有用的,这一次,所以我真的不希望它再次变得混乱。

首先,每个模块由几个 Java 包组成:

com.mycompany.mysoftware.modulename
com.mycompany.mysoftware.modulename.impl
com.mycompany.mysoftware.modulename.osgi
com.mycompany.mysoftware.modulename.test
Run Code Online (Sandbox Code Playgroud)

主要代码位于.impl. 其他模块使用的接口、一些枚举和一些数据容器类存在于包中,没有后缀。包中有 OSGi 特定代码(BundleActivators 等),.osgi包中有单元测试.test

现在我有一些类可以伪造一个用于测试其他模块的模块。我想知道我是否应该将它们放在已经包含主代码共享库.testcommon模块的包中,或者我是否应该有一个新模块test,我可以在 Maven 中设置不同的依赖范围。

ETA:我遇到的一个问题是我得到循环依赖:如果我有两个模块并且每个模块中的单元测试都需要另一个模块,那么包含虚假模块的模块依赖于包含接口的模块,即包含单元测试的相同模块。所以,fake 应该与测试一起,但这会导致大量的代码重复。或者,对于每个模块,我都制作了一个假模块,但这让我觉得它已经失控了......

Pas*_*ent 3

您不希望您的测试代码打包在主代码使用的公共模块中,是吗?

所以答案对我来说似乎很明显:创建一个测试模块并将其用作测试范围的依赖项。

编辑:我正在回答下面问题更新中提到的问题)

关于循环依赖,将接口放在单独的模块中怎么样?