我有一个轻量级测试框架,编写为 JUnit Abstract 测试。我想做的是让每个实现子类定义他们的自定义测试类设置。我的计划是让抽象超类定义一个@BeforeClass
调用抽象设置方法的方法,每个子类都将被强制定义,但这失败了,因为@BeforeClass
方法必须是静态的,静态方法不能抽象,也不能调用实例方法。
我可以假设子类将通过在文档中包含所需的内容或通过抛出 来进行设置IllegalStateException
,但出于多种原因,我真的希望能够在接口级别强制执行此操作。谁能想到解决这个问题?
顺便说一句,我在将这些测试参数化时遇到了同样的问题(子类定义了参数,但带@Parameters
注释的方法必须是静态的)。我通过使用允许方法级参数的第 3 方 JUnitParams 运行程序来解决这个问题。在这里查看:https ://github.com/Pragmatists/JUnitParams