我有一个类,它将元素添加到ArrayList(实例变量)。 当我使用Junit为类编写测试用例时,我只对类初始化一次。我在两个测试用例中都做了同样的工作。
public class Solution {
List<String> list = new ArrayList<String>();
public void modifyList() {
list.add("A");
list.add("B");
list.add("C");
}
}
SolutionTest.java
public class TestSolution {
Solution sol = new Solution();
@Test
public void testModifyList1() {
sol.modifyList();
Assert.assertEquals(3, sol.list.size());
System.out.println(sol.list);
}
@Test
public void testModifyList2() {
sol.modifyList();
Assert.assertEquals(3, sol.list.size());
System.out.println(sol.list);
}
}
当我在两个测试用例中打印列表时,为什么在第二个测试用例中打印时列表不返回[A, B, C, A, B, C]
。
为什么它只返回[A, B, C]
。
我的理解是,该类只初始化一次,因此列表只有一个副本,应该修改两次。但是,当我打印列表时,它只打印从该测试用例修改的值。
有人可以解释一下这种行为吗?
当我在两个不同的测试用例中对同一个对象调用相同的方法时,为什么列表不会被更新两次?
答案 0 :(得分:7)
list
第二次未更新的原因是Junit
的行为。 Junit
为每个测试创建测试类的实例。因此,为每个测试用例创建一个新对象,每次都重新初始化list
。
答案 1 :(得分:1)
JUnit每个测试方法实例化一次测试类。这意味着每个测试都会创建一次列表,无论您在何处声明它。