java - 能够通过 DependencyInjectionTestExecutionListener 避免在 spring TestContext 中重复加载应用程序上下文

标签 java spring-test

假设我有一个名为 ServiceTest 的测试类,其中包含三个测试方法 test1、test2 和 test3。这三种方法都使用了 spring 提供的一些资源。在目前的情况下,如果 spring 上下文的加载出现问题,则会为每个测试方法重试上下文加载。有没有一种方法可以让我在第一次失败时中止现有的 Hook ?这背后可能有充分的理由——但我不欣赏它。任何指针都会有所帮助。真正的问题是,上下文加载需要几分钟,如果它已经第一次失败,那么继续重新尝试加载上下文是没有用的,只会寻求延长 CI 引擎报告失败的时间。

我正在考虑向 spring guys 提出一个补丁,该补丁可以在 org.springframework.test.context.TestContext 中维护一个尝试映射,该映射可用于跟踪所做的尝试并避免一遍又一遍地尝试。想法?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:com/kilo/spring/test-context.xml" })
public class ServiceTest {

@Resource(name = "fibonacciService")
private FibonacciService fibonacciService;

@Test
public void test1() {
    long fibonacci = fibonacciService.getFibonacci(5);
}

@Test
public void test2() {
    long fibonacci = fibonacciService.getFibonacci(4);
}

@Test
public void test3() {
    long fibonacci = fibonacciService.getFibonacci(6);
}

最佳答案

不,目前没有办法让 ApplicationContext 加载在现有 hook-ins 的第一次失败时中止。

欢迎调用create a JIRA issue针对 SPR 项目和 Test 组件以及您的建议。

问候,

Sam(Spring TestContext 框架的作者)

关于java - 能够通过 DependencyInjectionTestExecutionListener 避免在 spring TestContext 中重复加载应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202535/

相关文章:

spring - 使用 Spring Security ACL 注释对方法进行单元测试的最佳方法是什么?

java - Android Studio 使用 Icon 设置准确的闹钟

java - 启用 Guice 的应用程序的 Proguard 优化(无混淆)后的 ClassFormatError

java - 使用 Apache POI 时出现空指针异常

java - Apache Felix mvn 包

java - 将测试类和配置类合并在一个类中?

java - Java 中 BigInteger 的问题

java - 使用嵌入式 Cassandra 加速 Spring MockMvc 集成测试

java - Spring 测试 : better use XML configuration over annotations?

java - 在自定义 Spring 端点的单元测试期间,GET "Connection refused"上出现 I/O 错误,该端点命中 Spring Controller 中的默认 swagger 端点