JUnit5 - 执行不带注释@Test测试方法



我有一个定义@BeforeEach@AfterEach方法的超类。该类还有一个方法,该方法仅在设置系统属性时运行 - 基本上是@EnabledIfSystemPropertyCondition。带有@Test注释的正常测试位于子类中。

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

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

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

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

希望对您有所帮助!

相关内容

最新更新