使用测试特定jar重新编译源代码

时间:2011-02-09 15:05:55

标签: junit maven automated-tests

我有一个多模块项目依赖于相当大的第三方库/ apis。由于apis与开发环境管理外部的系统交互,因此无法使用实际库运行自动junit测试。作为一种解决方法,我们创建了模拟接口/ apis的类,以便我们可以执行junits。我们使用eclipse作为开发的IDE,因此要运行junits,我们只需将jar在类路径中向上移动,重新编译,运行我们的junits,一切都很好。

现在我们正在转向Maven,寻找类似的解决方案。基本上,在构建我们的代码之后,需要使用mock jar再次重建所有代码以运行junit测试。这涉及应用程序的所有模块。我尝试在测试范围中添加jar,但这仅用于编译测试类;源类仍然使用真正的jar编译。但是,它在运行时失败,因为我们的模拟jar与真正的jar的所有签名都不匹配(因此jar的热交换不起作用;使所有签名匹配将是大事)。因此需要使用jar重新编译源代码。

所以看来有两种选择: 1)创建一个独立的测试模块,以某种方式提取所有源模块代码并使用模拟jar重新编译它并运行测试或 2)每个模块除了使用模拟jar编译的可安装jar之外还创建一个testjar,然后在测试阶段由依赖模块使用。

请指教。任何如何做上述任何一个的例子将不胜感激。

1 个答案:

答案 0 :(得分:0)

查看 this 链接。我认为它有你需要的东西。您可以使用两个maven配置文件来处理此问题。根据{{​​3}},您可以为每个配置文件提供不同的依赖关系。