首页 > 解决方案 > 在常见的 spring 上下文中运行 Spock 测试

问题描述

我使用 Spock 框架来运行我的测试。每个测试类都有 Spring 的注解@ContextConfiguration。正如我所看到的,每个测试类都会出现上下文,并且在不同的类中运行几十个测试需要花费大量时间。有没有办法将 Spock 测试类配置为在常见的 spring 上下文下运行?

标签: testingspock

解决方案


这不是关于斯波克,而是关于春天。

Spring 可以在许多测试用例的通用应用程序上下文中缓存,但您必须知道如何正确执行。

作为第一选择,请确保 'locations' 属性@ContextConfiguration是相同的。

此外,还可以利用@ContextHierarchy注释。

这种缓存设施非常脆弱,但可以工作。

也许用所有注释创建一个通用规范并从中继承是有意义的:

@ContextConfiguration(locations = ...)
// or maybe
@ContextHierarchy (...)
public abstract class MyCommonSpec extends Specification {
}

// and not in tests:

public class MyTest1 extends MyCommonSpec {
   ...
}

public class MyTest2 extends MyCommonSpec {
   ...
}

这是一个非常相关的讨论的链接


推荐阅读