[英]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.