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

时间:2014-02-01 13:05:52

标签: java spring unit-testing

我有一个类(ConfigurationReaderUtil),它将XML配置文件加载到bean(使用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类? 嗯,这就是两难...... 谢谢, 诉

1 个答案:

答案 0 :(得分:1)

你做错了。您的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
}