Java 运行Surefire测试时修补类路径

Java 运行Surefire测试时修补类路径,java,unit-testing,maven,classloader,surefire,Java,Unit Testing,Maven,Classloader,Surefire,我们正在遗留Java应用程序的上下文中开发代码,该应用程序大量使用静态成员和系统属性,期望文件位于磁盘上的不同位置。构建是在Maven中运行的 我们正在尝试允许对代码进行单元测试,而不必部署、配置和启动整个应用程序。为此,我在框架中修补了少量类,并在src/test/java中的Maven测试源代码中提供了我自己的相关源文件变体 作为下一步,我想通过提供一个JAR文件使这个补丁程序可重用,这个JAR文件可以作为开发大型应用程序一部分的任何项目的测试依赖项拉入。我想通过我们的普通二进制存储库来部署

我们正在遗留Java应用程序的上下文中开发代码,该应用程序大量使用静态成员和系统属性,期望文件位于磁盘上的不同位置。构建是在Maven中运行的

我们正在尝试允许对代码进行单元测试,而不必部署、配置和启动整个应用程序。为此,我在框架中修补了少量类,并在
src/test/java
中的Maven测试源代码中提供了我自己的相关源文件变体

作为下一步,我想通过提供一个JAR文件使这个补丁程序可重用,这个JAR文件可以作为开发大型应用程序一部分的任何项目的测试依赖项拉入。我想通过我们的普通二进制存储库来部署它

Surefire提供了一个选项来设置
,该选项仅适用于绝对路径,并将在类路径的末尾添加依赖项

从理论上讲,对项目依赖项进行正确排序是可行的,但我找不到任何关于这种顺序如何跨多个范围工作的文档。我需要Maven来保证我的
测试
依赖项在
运行时
依赖项之前加载


使用通过Maven依赖项解析机制拉取的JAR为Surefire运行修补类的可靠方法是什么?

看来您已经解决了问题。我会说把罐子放在一起会很痛苦。如果你想使用非maven二进制回购,以下是你的选择:@AnthonyJClink:我是如何解决我的问题的?我错过什么了吗?关于存储库:您的列表是关于源代码管理的,我们用来管理二进制存储库。。。避免这种情况的唯一真正方法是不加载代码,或者您可以依赖于非遗留注入,但这需要一些黑客攻击。(如guice或springs请求静态注入)。或者如果PEICE足够大,您可以简单地删除不重要的代码并替换模块。。。但是再一次。。哈奇…:(我无法更改遗留代码-这就是为什么我在运行测试时修补类路径上的东西。