2011-07-05 38 views
2

我是JUnit的新手,我得到了一個示例java項目,其中我需要爲所有方法編寫單元測試。 不幸的是,代碼設計不佳,一些方法是從UI完成的。此外,一些方法彈出一個消息框,並且不返回返回值。Junit和messageboxes

我有兩個問題:首先,如果不修改現有的代碼,是否有一種方法可以抑制消息框,而不是每次運行單元測試時都按Enter鍵?

第二個問題:測試函數是否可以期待消息框並在其字符串內容中聲明失敗\成功?我知道最好的解決方案是修復代碼本身 - 將BusinessLogic完全從UI中分離出來,並測試預期的結果,或者即使消息框在某種程度上是強制性的,也可以使用模式消息框(如謙虛對話框盒子),但不幸的是我不允許改變代碼中的任何東西。

謝謝:)

尼莉

+1

如果您有錯誤的代碼需要測試但不允許修復,請查找作業更改。你在爲白癡工作。 –

+0

我們在談論一個Swing UI嗎? Web應用程序/ JSP?它並不影響廣泛的答案,但細節可能有所不同。 –

+0

@Joachim,Swing UI。 @唐,你絕對正確:) – Nili

回答

0

不允許更改代碼,你說?首先想到的是看看JMockit,如果你嚴格限制代碼的寫法,那麼代碼的寫法應該如何測試呢?它應該使您能夠在不修改任何代碼的情況下,在測試運行時替換您的煩惱部分的首選實現 - 所以只有在測試環境中,您纔會更改測試對象(注意寫一個有意義的測試!)或者它的依賴關係。其他模擬對象框架也可能很有用,但是學習JMockit的投入真的花費了很多時間。

0
unfortunately I am not allowed to change anything in the code. 

有東西在谷歌如何搖擺試驗使用JUnit自動化種種。不幸的是,測試時無法解決這個問題。

2

如果只有你被允許編輯代碼,你可以開始各種各樣的方式,所以我的第一種方法是看看你是否可以放鬆這個限制,並閱讀Working Effectively With Legacy Code

如果您未能嘗試使用像FEST-Swing這樣的GUI測試框架來檢查消息框的內容是否符合預期。