2011-02-09 61 views
0

我有一个多模块项目依赖于相当大的第三方库/ apis。由于apis与开发环境管理外部的系统进行交互,因此无法对实际库执行自动junit测试。作为一种解决方法,我们创建了一些模拟interfaces/apis的类,以便我们可以进行联合。我们使用eclipse作为我们的开发IDE,所以为了运行junits,我们只需将jar放在classpath中更高的位置,重新编译,运行我们的junit,并且一切都很好。使用测试特定罐子重新编译源代码

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

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

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

回答

0

结账 this链接。我认为它有你所需要的。您可以使用两个maven配置文件来处理此问题。根据 this,您可以对每个配置文件有不同的依赖关系。