使用 Junit5 的 spock 单元测试中不考虑 @Rule 注释

Aet*_*ite 4 java junit unit-testing spock junit5

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

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

@Rule
public LogSpy logSpy = new LogSpy()
Run Code Online (Sandbox Code Playgroud)

Leo*_*ngs 5

发行说明来看

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

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

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