假设我有一个包含以下测试的旧版 JUnit 测试套件:
public class AwesomeTest {
public void testBusinessLogic() {
...
[awesome mocking library]
...
}
}
public class AmazingTest {
public void testBusinessProcess() {
...
[amazing xml operation]
...
}
}
现在假设 Awesome Mocking 库依赖于包含该类的 Awesome BCEL 字节码生成库,org.useful.XMLClass
并且该库具有 XMLClass 的版本 1。
现在假设 Amazing Xml 操作依赖于包含该类的 Amazing Xml 库,org.useful.XMLClass
并且该库具有 XML 类的版本 2。
还假设该类的第 2 版与第 1 版不向后兼容——因此哪个版本在类路径中具有更高的优先级——它会破坏另一个版本的依赖关系。
还假设有 400 个测试依赖于很棒的模拟库——所以重写不是一个理想的选择。
还假设一些关键的业务特性是用令人惊叹的 xml 库构建的——强烈建议不要重写它。
您如何解决这种类路径地狱的情况 - 除了使用两个手动排序的类路径和手动确定的测试子集两次运行 ant 测试(假设您使用 Ant 运行它们)之外?(我对自定义类加载器的想法持开放态度 - 但这似乎与具有 ant 解决方案的双自定义类路径的可维护性水平相同)