如何在spring测试中重用ContextConfiguration注释的位置值

时间:2016-09-21 09:13:03

标签: java spring junit spring-test

我有很多春天的测试。我们的应用程序上下文包含几个xml文件像这样:

[{'b': 'c2', 'd': 'e4', 'x': 'a1'},
 {'b': 'c2', 'd': 'e3', 'x': 'a1'},
 {'b': 'c1', 'd': 'e1', 'x': 'a1'},
 {'b': 'c1', 'd': 'e2', 'x': 'a1'},
 {'b': 'c3', 'd': 'e5', 'x': 'a2'},
 {'b': 'c3', 'd': 'e1', 'x': 'a2'},
 {'b': 'c4', 'd': 'e6', 'x': 'a2'}]

Spring默认缓存上下文,这可以防止每次为每次测试重新创建上下文,从而提高性能。要享受此功能,我必须在每个测试中使用完全相同的"位置"。

如何在测试之间共享这种注释?我知道我可以创建一个父类,所有测试都可以扩展。但有时我确实需要扩展其他类。我试图把String []放到一个常量中,但是注释不能有一个常量作为值,因为它是被禁止的。

所以问题是如何在没有父类的测试之间共享一组spring上下文xml位置?

1 个答案:

答案 0 :(得分:0)

我找到了。我必须创建一个这样的类:

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource(value = {
        "classpath:aaaaa.xml",
        "classpath:bbbbb.xml"})
public class IntegrationTestConfiguration {
}

然后在测试课程中我不得不说:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = IntegrationTestConfiguration.class )
public class MyTest

多数民众赞成。