2013-02-26 91 views
0

在Tomcat容器中開發應用程序時,我正在使用Eclipse和JUnit 4。容器管理與我們的Oracle數據庫的連接。在Eclipse中運行JUnit測試時不要執行某些代碼

雖然使用JUnit我有以下問題測試:在測試對象的構造有這樣的事情:

public Subject() { 
    // stuff 
    FancySingleton.getInstance().getFancy("stuff"); 
} 

不幸的是,方法getFancy()試圖執行一個查詢它不能因爲JUnit不能在tomcat容器中運行,並以無限循環結束。

我的第一個想法是讚揚代碼。其次認爲這似乎是一個糟糕的主意。在提交之前,我可以忘記刪除評論。

我的第二個想法是要突出Eclipse的代碼,以便運行JUnit測試,同時它不執行它。但它需要日食來支持這種方法。

最後我想到了類似預處理器指令的內容。

你的想法是什麼?只是傳入一個布爾值給構造函數是imho不是處理這種情況的乾淨方式。

回答

3

你可以模擬FancySingleton,或者你做對了,然後注入一個實現。

+1

我還補充說,調用一個在構造函數中執行Query的方法會使得該類很難測試,並且會使得使用該類的代碼更難以測試。 – NamshubWriter 2013-02-26 16:49:33

+0

謝謝你的回覆。這是一個非常古老的應用程序,我們試圖逐步推進單元測試。在正常的服務中,單身人士幾乎從不會在此時開始查詢,因爲它是一個每天晚上由作業更新的緩存。但是,正如你所說,測試某事。這會自動激發查詢,這是測試中的一個難題。 – Joshua 2013-02-27 08:36:37

相關問題