2016-07-24 119 views
0

假設我有以下簡單的代碼:爲什麼我們應該在測試中使用setUp和tearDown,而不是直接使用測試方法?

public class SimpleOperations { 
    public int square(int x){ 
     return x*x; 
    } 
} 

現在來測試前面的方法,下面的工作完美:

public class Jtest { 
    @Test 
    public void test() { 
     SimpleOperations test = new SimpleOperations(); 
     int output = test.square(5); 
     assertEquals(25, output);  
    } 
} 

爲什麼我們需要添加的安裝和拆卸方法?像這樣運行代碼可以顯示方法是否正確。 setUp/tearDown方法添加到測試中有什麼優勢?他們應該如何在這裏?

回答

0

您並不嚴格需要添加setUp和tearDown方法,但通常要遵循軟件開發的「不要重複自己(DRY)」原則。

有些人喜歡避免使用setUp和tearDown方法來隔離測試,以避免設置可能已經初始化的額外變量或對象干擾當前測試。

至於你的基本例子,我看不到添加setUp和tearDown方法的好處。

0

注意:這是一個稍長的答案。我會盡量保持簡潔。

對於一個簡單的例子,就像你所展示的那個,不需要爲你的測試進行任何設置或拆卸。

但是,考慮一下您正在測試具有一系列依賴關係的複雜服務的情況,您會希望使用setup方法來......設置您的測試所需的對象。這將包括嘲笑你的依賴,這樣調用你的服務的方法不會失敗。失敗測試用例只會改變模擬測試失敗的情況。

拆卸將有助於清除您的測試創建的工件,以便下一個測試可以工作,而不必受到之前測試遺留的干擾。考慮清除作爲運行測試的一部分而添加的測試(內存中)數據庫中的記錄或者測試用例本身。

相關問題