Junit新实例vs之前

时间:2017-05-19 23:34:47

标签: java junit

Junit行为是它为每个测试用例创建一个类的新实例。在每个测试用例之前执行一次@Before的方式相同。 当junit初始化每个测试用例的全局变量时,为什么我们需要@Before。 请查看以下示例。 code1和code2之间有什么区别。 例如:

代码1

public class MyTest{
        int count = 1;


    @Test
    public void test1(){
        count++;
        assertEquals(2, count); 
    }

    @Test
    public void test2(){
        count++;
        assertEquals(2, count); 
    }
}

代码2

public class MyTest{
        private int count;

        @Before
        public void before(){
            count=1;
        }

        @Test
        public void test1(){
            count++;
            assertEquals(2, count); 
        }

        @Test
        public void test2(){
            count++;
            assertEquals(2, count); 
        }
    }

1 个答案:

答案 0 :(得分:1)

您认为不需要它。你的两个例子都是等价的。

@Before的论点是语法上比在字段或构造函数中初始化更漂亮。对于那些不知道JUnit错综复杂的人来说,显而易见的是,为每个测试方法调用设置了Before中的值。

这是Martin Fowler在此事上所说的话: https://martinfowler.com/bliki/JunitNewInstance.html