【问题标题】:Run Spock tests under common spring context在常见的 spring 上下文中运行 Spock 测试
【发布时间】:2018-09-03 10:57:38
【问题描述】:

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

【问题讨论】:

    标签: testing spock


    【解决方案1】:

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

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

    首先,请确保@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 {
       ...
    }
    

    这是一个非常相关的讨论的link

    【讨论】:

      【解决方案2】:

      可行的方法:创建多个带有测试的类。例如,A、B、C、D。使继承如下:D -> C -> B -> A。在 D 中运行测试,这将在通用 spring 上下文下执行来自 A、B、C、D 的所有测试。

      我认为这种方法不是那么整洁和完美,但它解决了最初的问题。

      【讨论】:

        猜你喜欢
        • 2022-12-22
        • 2020-03-08
        • 2015-08-30
        • 1970-01-01
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-15
        相关资源
        最近更新 更多