2013-10-08 52 views
-1

我有幾個方法,在我的課使用Java語言編寫單元測試與主要方法

public class StringChecking 
{ 
public static void main(String[] args); 
public void stringChecker(String text, int number); //takes a string and prints that out. 
} 

我想編寫單元測試,測試「stringChecker()」的方法。我想知道如何去做這件事。當我在JUnit Testing類中創建StringChecking類型的對象時,我似乎無法從該實例訪問stringChecker()方法。

StringChecker方法根據參數打印出傳入文本的一定數量的單詞。我希望檢查打印輸出的前10個單詞是否與預期結果相同。

JUnit測試類

String expected = "My name is"; 
asserEquals(expected, actual); 

我猜我會做我的stringChecker方法返回的東西,序做檢查。但我不明白爲什麼我不能從測試類訪問方法。

+1

你如何「訪問」該方法?而且,你所要求的標題是什麼?...... –

+0

你最好分享你正在運行的代碼,當你試圖剪裁和修剪時,你已經搞得一團糟。 –

回答

4

如果您試圖聲明返回值爲的值,那麼您的方法簽名不正確 - 應該返回String。從那裏,你可以執行使用JUnit通常的操作(您main法在這方面沒有任何意義):

@Test 
public void checkString() { 
    String expected = "My name is"; 
    int actual = 3; // assuming words in string 
    StringChecking testObj = new StringChecking(); 
    assertEquals(expected, testObj.stringChecker(expected + " Bob", 3); 
} 

僅僅打印出值斷言/驗證什麼 - 它們提供視覺確認,這可能是經常不正確或無效。

Java必須知道這些值是什麼,最直接的方法是返回您需要的值。

這並不是說你可以從來沒有測試void方法,但在這種情況下,這是不合適的。

7

如果不是打印數字,而是將方法返回給調用者,代碼將更容易測試。

如果要測試實際打印,則可以使用set a spy object to System.out而不是打印收集數據。然後你的測試可以斷言輸出的正確性。

相關問題