2017-05-19 75 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