【发布时间】:2016-11-09 19:59:59
【问题描述】:
我正在尝试为一个名为 Student 的类编写一些 junit 测试。基本上,每个学生都有一个 studentNum,它被设置为一个迭代器,它是一个私有静态整数。每次创建新学生时,studentNum 都会增加。
我对一个函数进行了几个测试,该函数从传入的学生数组列表中获取学生人数为 1 的学生。但是,每次我在新测试中创建一个新的学生数组列表时,studentNum 都会从上一个测试的 studentNum 停止的地方开始。所以第一个测试会让学生的 studentNums 从 0 到 5,第二个测试会让学生的 studentNums 从 6 到 11。
我想知道是否有办法从我的测试类中重置私有静态 studentNum 整数,以便我可以让它在每个测试中从 0 开始?任何帮助将不胜感激。
【问题讨论】:
-
可能你想要一个在每次测试之前调用的
@Before方法。 -
你的代码在哪里?
-
只需在每个测试方法之前创建一个新的
Student夹具。 -
正确答案几乎可以肯定是“不要为此使用静态变量,而是使用外部计数器”。
-
创建一个新的 StudentList (或 StudentFactory 或任何您命名的状态)对象,使计数器成为非静态字段,如果您将其放入 before 方法中,您将始终拥有干净的测试上下文并且没有依赖项或缺少清理工作。
标签: java unit-testing junit