我对JUnit中的参数化测试有疑问。我正在运行一个包含所有测试类的测试套件,我的课程要求有一个测试套件来运行我的所有测试类,所以我不能修改它。问题是我有一堆Entry对象(让我们把它作为一个具有从1开始的唯一id的对象,并在每次创建它的新实例时递增),并且它们由JUnit预处理。在编译和运行我的程序时,我有9个条目在ParamTest
类中声明。在另一个类(EntryTest
)中,我有一个我创建的条目,它的ID应为1。但是,它的ID为10,这意味着参数化测试类中的9个条目已经预先创建。
我的问题是,无论如何强制ParamTest
类在EntryTest
类运行之前不进行任何预处理,或者这是不可能的。在套件中,我确保在EntryTest
之前声明ParamTest
。如果不可能的话,除了创建单独的套件或单独运行测试之外我还能解决这个问题吗?我正在考虑使用public static int来跟踪预处理量中的ID,但这听起来像是一个丑陋的解决方案。
答案 0 :(得分:0)
我认为你的测试会变得很难看,除非你有办法将静态类重置为已知状态。
我建议你公开一个package-private方法,允许你将ID值重置为特定的值(例如0
)。
即使在同一个测试类中,测试也应完全相互独立。