假设我有一个名为 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/