问题描述
|
我有一个依赖XML文件从中检索数据的程序。测试时,我希望它使用其他XML文件。
我想使用
ClassLoader
进行此操作,其中的代码可能与此类似:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
使用加载程序,我将加载测试XML资源文件。因此,使用默认XML文件的所有操作都将使用测试XML文件。
我将如何去做呢?
解决方法
您有不同的选择,可以创建不同的jar文件,例如testing.jar和production.jar并将相应的文件放入这些文件中。使用以下方法获取InputStream
InputStream is = loader.getResourceAsStream(resourceName);
或者,您创建一个帮助程序类,该类首先搜索File,然后尝试从ClassLoader获取InputStream。如果文件(具有正确的路径)在您的开发环境中可用,那么您将获得测试XML,而在生产环境中,该文件将不可用,因此您将从资源包(jar)中获取生产XML。
如果使用的是Maven,则有不同的资源(src / main / resources和src / test / resources)可用。
,如果您的XML用于填充某些配置对象,而测试的目的是测试具有不同配置的应用程序-我建议更改此方法:
您最好模拟配置对象并在测试中使用模拟。
我相信,如果您使用MockIt,甚至不需要更改您的应用程序即可。