2017-09-17 64 views
-3

我正在試驗JUnit測試,但我不確定如何處理這個問題。 我有一個類,其方法返回一個字符串與這種方法的名稱。沒有變量的JUnit測試

public class Example { 
    static void method1() { 
     System.out.println("method1"); 
    } 

    public static void main(String[] args) { 
     method1(); 
    } 
} 

現在,我想測試這一類JUnit斷言,但由於沒有變數,我不知道如何來測試該代碼。

有人能告訴我這個JUnit測試的完整代碼嗎?

+1

這個特定代碼的答案是修補流並捕獲輸入。但是,這可能不是您的真實代碼,您可能不只是試圖捕獲打印流內容。如何顯示一些真實的代碼,以便您可以真正解決實際問題。 –

回答

2

這很難進行單元測試,因爲您有一個硬編碼到您的對象的依賴項。該依賴關係是系統輸出控制檯。從對象刪除的依賴,並將其移動到應用程序的代碼消費:

public class Example { 
    static String method1() { 
     return "method1"; 
    } 

    public static void main(String[]args) { 
     System.out.println(method1()); 
    } 
} 

現在,你可以通過簡單地斷言,該方法返回的值是你所期望的測試方法。

這裏的目標是從您的代碼中刪除依賴關係。像系統控制檯輸出這樣的東西必須位於某處,但隨着代碼變得更復雜,您可以將它們隔離在可模擬接口後面。你的業務邏輯,你想要單元測試的東西,應該沒有依賴關係。

+0

好的。我知道問題出在我的原始代碼中,所以讓我們簡化它。我有一個只有一個方法的類,並且此方法應該返回一個帶有此方法名稱的String類型。你會如何將它編碼爲我原始代碼的替代品,因此我可以對該類進行簡單的JUnit測試?請你能給我提供這個類的完整代碼的例子嗎?謝謝。 –

+0

@ Mr.Dax:那麼你只是問如何編寫一個JUnit測試呢?在線提供了各種示例和教程。在這種情況下,所有測試都會調用該方法並將結果與​​預期結果進行比較。 – David