java - 如何在 Spring 测试中重用 ContextConfiguration 注释的位置值

标签 java spring junit spring-test

我对 Spring 进行了很多测试。我们的应用程序上下文包含几个 xml 文件。像这样的事情:

@ContextConfiguration( locations = {
        "classpath:aaaaa.xml",
        "classpath:bbbbb.xml"})

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

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

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

最佳答案

我已经发现了。我必须创建一个这样的类:

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

就是这样。

关于java - 如何在 Spring 测试中重用 ContextConfiguration 注释的位置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39612233/

相关文章:

java - 可选打印 Java 中的堆栈跟踪

java - 四舍五入到 2 位小数并通过 TextView

java - Dockerized Zuul 网关无法连接到 dockerized Eureka 服务器

java - JUnit4 - 测试方法是否不执行任何操作

java - 创建 bean 时出错

java - Junit 测试获取 NoSuchElementException 但仅限于特定数字

java - 如何从 Android 上的外部存储打开 .gif 文件作为 InputStream

java - 使用 Java 映射大于 2GB 的文件

java - 如何在 spring 中创建一个非阻塞的@RestController webservice?

java - 使用 SseEmitter 的 Spring rest 服务