gpt4 book ai didi

unit-testing - 我应该在哪里放置 Java 库的测试支持代码

转载 作者:行者123 更新时间:2023-12-04 15:35:16 26 4
gpt4 key购买 nike

我有一个 Maven 项目,它在其他项目中用作库。设置非常标准:src/main带有图书馆代码,src/test带有 src/main 的测试用例.

假设我有一个项目 foo这取决于这个库。 foo也有测试用例。帮助在 foo 中编写测试对于使用我的库的代码,我想给 foo编写测试的支持框架(例如设置模拟环境)。

我可以把这个支持代码放在哪里?

  • 它不应该进入 src/main因为它不打算投入生产。
  • 进不去src/test因为从 foo 创建依赖关系对库的测试的测试向类路径添加了太多垃圾(如 logback-test.xml 配置文件、从未执行的测试……)。

  • 我可以将代码放入一个新模块中,但它与 src/main 中的代码紧密耦合。 ,所以我想将它保留在同一个项目中(还允许测试支持代码访问包私有(private)字段和方法)。

    此外, src/test 中的代码应该可以访问它,以便我可以使用它来编写我自己的单元测试。

    Maven 有什么选择可以将其保留在同一个项目中,但仍将其与 src/main 完全分开和 src/test ?我能否以某种方式为 src/test-support 创建第三个输出 JAR? ?或者我应该将代码放入 src/test然后在 JAR 插件中使用过滤器来仅包含支持代码?

    最佳答案

    您可以使用 Maven Jar 插件执行此操作

    Maven Jar Plugin

    由于您使用的是 Maven,因此您可以剪切包含要在 foo 中使用的库的项目的单独 Artifact ,添加以下插件以创建另一个 jar Artifact :

      <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <executions>
    <execution>
    <goals>
    <goal>test-jar</goal>
    </goals>
    </execution>
    </executions>
    </plugin>

    这将在该项目中创建 src/test 目录中所有内容的第二个 jar。

    Test Jars

    你可以用一些过滤器拼接出你不需要的那个 jar 里的东西。

    然后要使用这个库,你可以把它作为依赖包含在 foo 中:
     <dependency>
    <groupId>your.group</groupId>
    <artifactId>parent-artifact-id</artifactId>
    <version>1.0.0</version>
    <type>test-jar</type>
    <scope>test</scope>
    </dependency>

    要进一步分离项目,您还可以使用更多框架化的测试 jar 创建一个仅测试项目。
    请参阅如何在 Maven Jar Plugin 文档中创建包含测试类的 jar(首选方式)

    关于unit-testing - 我应该在哪里放置 Java 库的测试支持代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991083/

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