【发布时间】:2011-02-09 15:05:55
【问题描述】:
我有一个依赖于相当大的第三方库/api 的多模块项目。无法使用实际库运行自动化 junit 测试,因为 api 与开发环境管理之外的系统交互。作为一种解决方法,我们创建了模拟接口/api 的类,以便我们可以执行 junits。我们使用 eclipse 作为我们的 IDE 进行开发,所以要运行 junits,我们只需将 jar 在类路径中向上移动,重新编译,运行我们的 junits,一切正常。
现在我们正在转向 Maven,正在寻找类似的解决方案。基本上,在构建我们的代码之后,需要使用模拟 jar 重新构建所有代码来运行 junit 测试。这涉及应用程序的所有模块。我尝试在测试范围内添加 jar,但这仅用于编译测试类;源类仍然是用真正的 jar 编译的。但是,它在运行时失败,因为我们的模拟 jar 与真实 jar 的所有签名都不匹配(因此 jar 的热交换不起作用;使所有签名匹配将是一项艰巨的任务)。所以需要用jar重新编译源码。
看来有两种选择: 1)制作一个独立的测试模块,以某种方式拉入所有源模块代码并使用模拟jar重新编译它并运行测试或 2) 每个模块除了使用模拟 jar 编译的可安装 jar 之外,还创建一个 testjar,然后在测试阶段由依赖模块使用。
请指教。任何有关如何执行上述任一操作的示例都将不胜感激。
【问题讨论】:
标签: junit maven automated-tests