动态更改资源文件以进行测试

问题描述

| 我有一个依赖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,甚至不需要更改您的应用程序即可。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...