【问题标题】:Where should I put shared testing utilities in a multi-module Maven project?我应该在多模块 Maven 项目中将共享测试实用程序放在哪里?
【发布时间】:2010-12-06 00:38:33
【问题描述】:

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

首先,每个模块都包含几个 Java 包:

com.mycompany.mysoftware.modulename
com.mycompany.mysoftware.modulename.impl
com.mycompany.mysoftware.modulename.osgi
com.mycompany.mysoftware.modulename.test

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

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

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

【问题讨论】:

    标签: java maven-2 osgi packages


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好吧,如果它在该公共模块的测试子目录中,它不会被打包。不过,我猜,依赖范围可能是最重要的方面。
    • 确实如此。但是,如果它位于公共模块的 test 子目录中,则不能在多个模块中依赖该代码。
    猜你喜欢
    • 2023-04-09
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2011-06-10
    • 2011-03-04
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多