繁体   English   中英

JUnit5-执行没有@Test批注的测试方法

[英]JUnit5 - execute a test method without @Test annotation

我有一个定义@BeforeEach@AfterEach方法的超类。 该类还具有仅在设置系统属性时才应运行的方法-基本上是@EnabledIfSystemPropertyCondition 带有@Test批注的普通测试在子类中。

这很好用,但是条件测试在测试报告中显示为已跳过-我想避免。 有什么方法可以在某种条件下运行测试方法,但在正常情况下不将其视为测试?

这个问题与@Test注释的继承无关。 基本问题是,有什么方法可以在条件下运行测试方法,但在正常情况下不将其视为测试?

实现所需的最简单方法是在测试用例中手动检查子句(就像@Paizo在注释中建议的那样)。 JUnit具有一些功能,可让您跳过测试执行,例如带有@RunIf批注的Junit-ext项目或特殊的Assume子句 ,如果不满足此假设,将强制跳过测试。 但是这些功能也会将测试标记为已跳过,这在您的情况下是不希望的。 您可能想到的另一种可能性是使用反射的魔术来修改代码,以在运行时添加/删除注释,但这是不可能的。 从理论上讲,我可以想象使用cglib在运行时使用子类对测试类进行子类化以及像Spring一样管理批注的困难方式,但是首先要问问自己是否值得?

我个人的感觉是,您正在尝试修复运行良好且不会损坏的东西。 报告中的跳过测试不是失败的测试。 您可以从报告是否已执行测试中了解,这很酷。

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM