【问题标题】:@Rule annotation is not considered in spock unit tests using Junit5在使用 Junit5 的 spock 单元测试中不考虑 @Rule 注释
【发布时间】:2023-04-03 17:07:01
【问题描述】:

我正在尝试迁移我的项目以使用 Junit5。到目前为止,我一直在使用一个“LogSpy”类,它基本上拦截并保存所有日志,以便轻松测试它们。使用 Junit4 和 Spock 测试,我能够使用 @Rule 注释初始化我的日志拦截器类(即使它在 Spock 测试中)。迁移到 Junit5 后,此注释似乎没有初始化所需的日志拦截器类,我找不到原因。为什么会这样? Junit4 和 5 关于 @Rule 注释的区别是什么?有没有办法解决这个问题?

这就是我初始化 LogSpy 类的方式。它在 JUnit 单元测试中初始化,但不在 Spock 测试中。

@Rule
public LogSpy logSpy = new LogSpy()

【问题讨论】:

    标签: java unit-testing junit junit5 spock


    【解决方案1】:

    来自release notes

    spock-core 不再支持 JUnit 4 规则,但是,有一个新的 spock-junit4 模块提供最大努力支持以简化迁移。

    简而言之,如果您仍需要使用 JUnit 4 规则,请添加 spock-junit4 依赖项。

    从长远来看,我建议迁移到 Spock 原生 extensions

    【讨论】:

      猜你喜欢
      • 2015-08-31
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多