有没有办法根据junit5中的标签进行断言?

Is there a way to make assertions based on tags in junit5?

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

例如,@Medium 注释的测试必须在六十秒内完成,并且不能访问网络。

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

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

在 JUnit 4 上实现这个非常简单,只需要定制系统的几个关键部分。

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

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

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

是的,自定义 TestEngine 就此而言太过分了。

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

I'm not sure how to enforce the test sizing policy.

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