2011-05-26 78 views
0

我有一个程序依靠XML文件从中检索数据。测试时,我希望它使用不同的XML文件。动态更改资源文件以进行测试

我想做到这一点使用ClassLoader,其中代码可能类似于沿此线的东西:

ClassLoader loader = Thread.currentThread().getContextClassLoader(); 

使用装载机,我会加载测试XML资源文件。因此,所有使用默认XML文件的操作都将使用测试XML文件。

我该怎么做呢?

回答

0

你有不同的选择,你可以创建不同的jar文件,例如testing.jar和production.jar并将相应的文件放入这些文件中。获取一个InputStream与

InputStream is = loader.getResourceAsStream(resourceName); 

或者你创建一个辅助类,这是第一次搜索一个文件,然后试图从ClassLoader的InputStream的。如果文件(使用正确路径)在您的开发环境中可用,那么您将获得测试XML,但在生产环境中,文件不应该可用,因此您可以从资源包(jar)中获取生产XML。

如果您使用的是Maven,则可以使用不同的资源(src/main/resources和src/test/resources)。

0

如果您的XML被用于配置某个配置对象,并且您的测试的目的是使用不同的配置测试应用程序 - 我建议更改该方法: 您最好嘲笑配置对象并使用模拟在测试中。

我相信如果你使用MockIt,你甚至不需要改变你的应用程序就可以实现。