Maven 2 如何在测试阶段强制maven使用依赖项的模拟版本

Maven 2 如何在测试阶段强制maven使用依赖项的模拟版本,maven-2,Maven 2,因此,我有一个Java应用程序,它具有访问一些web服务的。我想模拟出适当的类,这样我就可以只使用一些硬编码的请求/响应,我希望maven在测试期间无缝地使用它们,并在最终构建期间忽略它们 我希望maven2: 1) 编译我的模拟类 2) 编译依赖于模拟代码的主类 3) 运行测试 4) 重新编译任何具有真正依赖项的主类,而不是我的mock 5) 完成maven安装 理想情况下,我只想将我的模拟类命名为与我的主类相同的名称,并将它们保存在src/test/mock或其他文件中。我对maven有点陌

因此,我有一个Java应用程序,它具有访问一些web服务的。我想模拟出适当的类,这样我就可以只使用一些硬编码的请求/响应,我希望maven在测试期间无缝地使用它们,并在最终构建期间忽略它们

我希望maven2:

1) 编译我的模拟类
2) 编译依赖于模拟代码的主类
3) 运行测试
4) 重新编译任何具有真正依赖项的主类,而不是我的mock
5) 完成maven安装


理想情况下,我只想将我的模拟类命名为与我的主类相同的名称,并将它们保存在src/test/mock或其他文件中。我对maven有点陌生,到目前为止,maven似乎只会编译src/main,然后是src/test,但我希望我能做到这一点。有什么想法吗?

为这些测试制作另一个maven项目。可能有替代方案,但它们会让人困惑,难以维护。

Maven没有这样的工作流程(尤其是步骤4),实现某种方法肯定不简单。我的建议是使用某种具有“测试配置”的DI框架在测试期间在运行时注入模拟。

这不是对您问题的直接回答,但我相信这是一种更好的方法

。您将拥有接口的生产实现和模拟实现。你甚至可以疯狂地使用或编写你的模拟。这可能有点太疯狂了:-)

用于在生产中注入生产类,并在单元测试中注入模拟类

您的mock可以完全存在于./src/test/java中。您可能可以向测试源添加不同的目录,但阻力最小的路径是只使用名为“mocks”的包。Maven首选约定优于配置