2

我有一个基于 JUnit 4 的测试系统,它根据一些自定义注释强制执行测试策略。特别是,我可以注释方法并让测试系统从这些方法强制超时和资源访问。

例如,使用 @Medium 注释的测试必须在 60 秒内完成,并且无法访问网络。

缺少自定义注释的测试被归类为“小型”测试,必须在 10 秒内完成,并且无法访问网络或文件系统(例如,确保单元测试实际上是单元测试)。

测试系统还确保在尝试任何中等测试之前通过所有小测试。在尝试任何大型测试等之前,必须通过所有中等测试。

在 JUnit 4 之上实现这一点相当简单,只需要定制系统的几个关键部分。

我正在探索将其迁移到 JUnit 5,并且我想知道是否有一个好方法可以做到这一点。新的发现和过滤机制将真正简化测试排序,但是随着运行器的移除,我不确定如何执行测试大小调整策略。

注意:让测试本身强制执行策略是行不通的,因为我需要确保在不了解测试系统的情况下编写的测试执行了小测试策略。

我相信我可以创建一个自定义测试引擎,但我认为这可能有点矫枉过正。

4

1 回答 1

2

是的,为了这个目的,一个习惯TestEngine将是矫枉过正的。

至于访问标签,这很容易通过您实现的任何扩展。扩展回调方法接收对ExtensionContext提供标签访问的(或其子类)的访问。见org.junit.jupiter.api.extension.ExtensionContext.getTags()

我不确定如何执行测试规模政策。

这是目前(从 JUnit Jupiter 5.0 M3 开始)无法实现的部分,但我们计划让这些事情成为可能,希望在 5.0 GA 之前。有关详细信息,请参阅第 157期。

于 2016-12-09T03:37:33.650 回答