我有一个依赖XML文件来从中检索数据的程序。在测试时,我希望它使用不同的XML文件。
我想使用ClassLoader
执行此操作,其中代码可能类似于以下内容:
ClassLoader loader = Thread.currentThread().getContextClassLoader();
使用loader,我会加载测试XML资源文件。因此,使用默认XML文件的所有操作都将使用测试XML文件。
我将如何做到这一点?
答案 0 :(得分:0)
你有不同的选择,你可以创建不同的jar文件,例如testing.jar和production.jar并将相应的文件放入这些文件中。使用
获取InputStreamInputStream is = loader.getResourceAsStream(resourceName);
或者您创建一个帮助程序类,它首先搜索文件,然后尝试从ClassLoader获取InputStream。如果您的开发环境中有文件(使用正确的路径),那么您将获得测试XML,在生产环境中,该文件不可用,因此您可以从资源包(jar)获取生产XML。
如果您使用的是Maven,则可以使用不同的资源(src / main / resources和src / test / resources)。
答案 1 :(得分:0)
如果您的XML用于弹出某些配置对象,并且测试的目的是使用不同的配置测试应用程序 - 我建议更改方法: 你最好嘲笑配置对象并在测试中使用mock。
我相信如果你使用MockIt,你甚至不需要改变你的应用程序来实现它。