2017-05-19 44 views
2

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

代码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); 
     } 
    } 
+0

'@ Before'是非常有用的。例如,您可以初始化数据库连接,服务类,测试数据,属性等。 – tima

回答

1

你是正确的,它不需要。你的两个例子都是相同的。

@Before比字段或构造函数中的初始化在语法上更漂亮。对于不了解JUnit的复杂性的人来说,它也使得对每个测试方法调用都设置Before之前的值的人显而易见。

这里是马丁·福勒就此事说:如果你想初始化的东西,是不是`int`更复杂 https://martinfowler.com/bliki/JunitNewInstance.html