我有一个定义@BeforeEach
和@AfterEach
方法的超类。该类还有一个方法,该方法只应在设置系统属性时运行 - 基本上@EnabledIfSystemPropertyCondition
。使用@Test
注释的常规测试位于子类中。
这很有效,但条件测试在测试报告中显示为跳过 - 我想避免。有没有什么方法可以在条件下运行测试方法,但在正常情况下不考虑它作为测试?
此问题与@Test
注释的继承无关。基本问题是我是否可以在条件下运行测试方法,但在正常情况下不考虑将其作为测试?
答案 0 :(得分:0)
实现所需的最简单方法是在测试用例中手动检查子句(正如@Paizo在注释中建议的那样)。 JUnit有几个功能允许您跳过测试执行,例如带有return
注释的Junit-ext项目或特殊Assume clause,如果不满足此假设,将强制跳过测试。但是这些功能也将测试标记为跳过,这在您的情况下是不可取的。您可能考虑的另一种可能性是使用反射的魔力修改代码以在运行时添加/删除注释,但这是不可能的。从理论上讲,我可以想象一种使用cglib在运行时子类化测试类并像Spring一样管理注释的困难方法,但首先要问自己是否值得?
我个人的感觉是,你正在努力修复那些工作完美且没有破损的东西。报告中的跳过测试不是失败的测试。你可以通过测试执行或不测试来理解它很酷。
希望它有所帮助!