4

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

我正在考虑向 Spring Guy 提出一个补丁,该补丁可以在 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);
}
4

1 回答 1

3

不,目前没有办法ApplicationContext在使用现有挂钩的第一次失败时中止加载。

随时根据您的建议针对SPR项目和测试组件创建 JIRA 问题。

问候,

Sam(Spring TestContext 框架的作者)

于 2012-06-26T15:15:36.497 回答