java - Spring 单元测试 - 为不同的单元测试加载不同的配置文件

标签 java spring unit-testing

我有一个类 (ConfigurationReaderUtil),它将 XML 配置文件加载到 beans(使用 simpleframework)。还有另一个类(我们将其命名为 XXX 类),它使用由 ConfigurationReaderUtil 加载的 bean。
我想测试XXX类。当 XML 配置文件中存在无效数据时,测试错误情况非常重要。所以目前我在 src/test/resource 中有一个 XML 文件,可以用来测试成功的案例。我还需要 src/test/resource 中更多的 XML 文件来测试错误的情况。
但是我在 ConfigurationReaderUtil 中有类似的东西:

InputStream in = new ClassPathResource(Constants.PATH_TEMPLATE_CONFIG_XML).getInputStream();
templatesBean = serializer.read(TemplatesBean.class, in);

所以我需要为不同的单元测试加载不同的 XML 文件。我真的不知道如何才能实现这一目标。我可以在单元测试中以某种方式定义我需要哪个测试 XML 文件吗?但是在这种情况下,我应该如何编写 ConfigurationReaderUtil 类?
嗯,这就是困境......
谢谢, 五、

最佳答案

你做错了。您的 XXX 类不处理 XML 解析。它处理由另一个类从 XML 资源读取的 bean。因此,XXX 的单元测试不应使用 XML 文件作为输入,而应使用通常由其他类创建的 bean 实例,但您应该在 XXX 的单元测试中手动创建该实例:

@Test
public void testWithInvalidInput() {
    SomeBean invalid = new SomeBean();
    invalid.setValue("invalidValue");
    XXX xxx = new XXX();
    xxx.doSomeWork(invalid);
    // now check that doSomeWork does the right thing
}

关于java - Spring 单元测试 - 为不同的单元测试加载不同的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498419/

相关文章:

java - 将 Spring Webflow 从 1.0.6 升级到 2.3

perl - 如何模拟内置运算符

java - 从java代码运行shell脚本

java - 如果类泛型类型已经有界,通配符边界?

java - Angular 和 Java Jersey API 存在问题,末尾编码 utf-8 空格无效 json

python - 单元测试 MySQL 数据库交互

javascript - 在 JsTestDriver 中设置 CoffeeScript 单元测试

Java Swing Multiinput 第二行的第二个 JTextField

java - CRUDRepository 的 Spring Data Redis 问题

具有两种 MVC 配置的 Spring Boot