JUnit中的实例变量

时间:2017-05-02 04:40:28

标签: java list unit-testing junit

我有一个类,它将元素添加到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]。 我的理解是,该类只初始化一次,因此列表只有一个副本,应该修改两次。但是,当我打印列表时,它只打印从该测试用例修改的值。 有人可以解释一下这种行为吗?

当我在两个不同的测试用例中对同一个对象调用相同的方法时,为什么列表不会被更新两次?

2 个答案:

答案 0 :(得分:7)

list第二次未更新的原因是Junit的行为。 Junit为每个测试创建测试类的实例。因此,为每个测试用例创建一个新对象,每次都重新初始化list

答案 1 :(得分:1)

JUnit每个测试方法实例化一次测试类。这意味着每个测试都会创建一次列表,无论您在何处声明它。