gpt4 book ai didi

java - Maven 中服务提供者接口(interface)的单元测试

转载 作者:行者123 更新时间:2023-11-30 05:05:39 25 4
gpt4 key购买 nike

最近,我们的开发团队已将项目管理和构建周期从 Ant 构建文件转移到 Maven。到目前为止,我对结果非常满意。由于我仍在掌握 Maven,因此我还没有准备好应对异常构建需求的答案。

现在我已经创建了一个新项目,并决定立即开始进行正确的 Maven 设置。该项目实际上是一个 API,它使用 Java 服务提供者接口(interface) (SPI) 来查找可插入实现。这些实现可以以常规 META-INF/services/factoryname 方式注册自身。 API 完成了大部分工作,但需要实现才能获得真正有用​​的东西。

我现在的问题是:我该如何为此编写单元测试?我想到了两种方法:

  1. 在测试包中创建一个简单的实现,构建该实现,然后将其用于单元测试。这似乎不太适合 Maven 项目生命周期。

  2. 创建一个包含测试实现的单独项目。尽管这意味着我们的 SVN 存储库中的另一个条目,但它感觉像是更干净的方法。该项目可以在主 API 项目的测试周期中作为 jar 来构建和使用。它可以被列为主项目中具有测试范围的依赖项 Artifact 。

在这两种情况下都存在一个根本问题...实现需要主 API 进行编译。毕竟它必须有一个工厂类来实现API的抽象工厂。但为了正确构建主要 API、测试阶段等,需要测试实现。这实际上是一个循环依赖的问题。

在 Maven 中处理这个问题的好方法是什么?在 Ant 中,我只是在 API 及其测试之间构建实现。如果这有助于了解的话,我稍微滥用了 SPI 来定位对象模型包而不是单个实现。它不太像 JAXP,而更像是一种注册资源的方式。

最佳答案

您可以使用maven-jar-plugin作为正常构建过程的一部分生成测试 jar。这样您就可以一步生成两个 Artifact 。

关于java - Maven 中服务提供者接口(interface)的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196654/

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