2010-11-19 72 views
1

我正在嘗試爲我創建的遊戲編寫單元測試。 遊戲是一個tic tac腳趾實現,它與用戶交互並從命令行獲取輸入。 我不知道我該如何去編寫一個測試,將採取和檢查用戶輸入。 例如: 運行時:程序要求用戶輸入名稱及其符號('x'或'0') ,然後繼續接受位置輸入。用戶輸入的單元測試 - Java

我是否創建@Before方法並在此方法內寫入輸入語句?還是有更好的方法來做到這一點? 在我的@Before方法中寫入所有內容會使其變得非常大。

有什麼建議?請幫忙。

謝謝

回答

1

理想情況下,你會分裂你的輸入類到一個接口和一個實現,然後創建一個MockInput用於測試目的。

interface IUserInput { 
    public String getUserName(); 
    public XO_Enum getUserSymbol(); 
} 

class MockUserInput implements IUserInput { 
    private XO_Enum xo; 
    private String name; 
    public MockUserInput(String name_, XO_Enum xo_) { 
     xo = xo_; 
     name = name_; 
    } 
    public String getUserName() { return name; } 
    public XO_Enum getUserSymbol() { return xo; } 
} 

當某些測試需要虛假的用戶輸入時,您只需爲這個場合掀起一個模擬測試並繼續前進。符號和名稱可以是硬編碼的,但這種方式給你一些靈活性。

鑑於hhafez的回答,我們中的一個明顯回答了錯誤的問題......我不確定這是他。嗯,這會有所幫助。

+0

謝謝。都有所幫助。 :) – JJunior 2010-11-20 00:49:35

1

你說你想寫

一個測試,將採取並檢查用戶輸入

你不應該有一個類,確實都拿出來,檢查用戶輸入,這是很差的凝聚力。 取而代之的是有兩個類:一個Validator(或者檢查器或者你想要調用它的東西)和一個輸入處理器,它接受用戶輸入並構建Validator可以理解的一些對象。

將問題分開後,爲您的Validator編寫junit測試用例應該非常簡單。至於用戶輸入類有看看這個問題about how to unit test console based app

+0

謝謝。我爲兩者創建了一個單獨的課程。我將創建一個模擬對象來測試它。非常感謝:) – JJunior 2010-11-20 00:50:27