gpt4 book ai didi

java - 使用 Maven 和 ParameterSupplier 组织项目

转载 作者:行者123 更新时间:2023-12-02 07:29:46 26 4
gpt4 key购买 nike

我想知道在以下情况下对项目/模块组织有何建议:

  1. 我有一个项目 DomainObjects我在其中有一个类(class)MyObject
    1. /src/test/javaDomainObjects我有 MyObject 的测试
  2. 我有一个项目 Client这取决于DomainObjects

我想添加 ParameterSupplierMyObjectTestSupplier类提供 MyObject 的测试实例供 Client 中的测试使用。

提供 MyObjectTestSupplier 似乎最有意义在 DomainObjects项目。这是我的困境...

  1. 如果我将供应商放入 src/test/javaDomainObjects Client 将无法使用它.
  2. 我不想把它放在 src/main/java 中的DomainObjects因为这意味着 JUnit 必须作为 DomainObjects 的编译依赖项包含在内从而包含在我的生产代码中。
  3. 如果我将供应商放入某个项目中DomainObjectsTest我有三个选择
    1. 仅将供应商作为测试项目,但这意味着在 DomainObjects 中进行测试无法使用该供应商。
    2. DomainObjects进行所有测试和供应商在DomainObjectsTest但这意味着DomainObjects即使测试失败也会被maven成功编译
    3. 复制 src/test/java 中的供应商的DomainObjectssrc/main/javaDomainObjectsTest .

我想过尝试制作 DomainObjectsTest DomainObjects 的模块但这仅适用于 DomainObjects 的包装是 pom这在这里不起作用。

想法?有建议吗?

编辑:作为解释,MyObject是一个简单的bean(只是getters和setters),我使用ParameterSuppier用于提供填充的 Bean 实例的模式。供应商提供实用方法来轻松创建用于测试的 bean 填充实例。我这样做是为了不在我的项目中重复这个填充代码(或模拟等效代码)。

最佳答案

the official Maven mini guide on this particular topic表示您应该将 DomainObjects 项目的测试工件发布到本地 Maven 存储库(或您愿意或能够的任何地方)并使用 DomainObjects-X.Y-tests 工件作为 Client 项目中测试范围的依赖项。

发布测试工件是通过使用 the jar:test-jar goal of the Maven JAR plugin 完成的.

如果您将此工件作为测试范围的依赖项包含在您的 Client 项目中,则依赖于 Client 项目的任何其他项目都不会继承您的 DomainObjects 项目的测试工件,因为默认情况下测试范围的依赖项不具有传递性,如the official guide on Maven's dependency mechanism所述.

关于java - 使用 Maven 和 ParameterSupplier 组织项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com