Maven中服务提供者接口的单元测试

时间:2011-03-04 16:40:48

标签: java maven-2 maven factory service-provider

最近,我们的开发团队已经从Ant构建文件迁移到Maven,用于我们的项目管理和构建周期。到目前为止,我对结果非常满意。由于我还在处理Maven,我没有为不寻常的构建要求做好准备。

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

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

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

  2. 创建一个包含测试实现的单独项目。虽然这意味着我们SVN存储库中的另一个条目,但感觉就像更清洁的方法。该项目可以在主API项目的测试周期中构建并用作jar。它可以在主项目中列为具有测试范围的依赖项工件。

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

    在Maven中处理这个问题的好方法是什么?在Ant中,我只是在API和它的测试之间构建实现。如果知道有用,我会轻微滥用SPI来定位对象模型的束而不是单个实现。它不像JAXP,更像是一种注册资源的方式。

1 个答案:

答案 0 :(得分:1)

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

相关问题