Junit單元測試使用log4j輸出日誌

2021-09-02 09:24:31 字數 1808 閱讀 5949

[size=medium] junit+spring+log4j整合之所以麻煩,是因為spring與log4j的整合,是放在web.xml裡的,隨tomcat啟動後,spring才會載入log4j,而用junit測試是不需要tomcat啟動的,所以junit與log4j的整合才比較費勁。junit使用spring時,若spring沒載入到log4j就會報以下警告:

[/size]

[size=medium][color=darkred]解決辦法1:最簡單粗暴的方法[/color][/size]

[size=medium] 將log4j配置檔案放到src根目錄下,這是由於spring載入log4j預設從src目錄裡找。junit**如下:[/size]

@runwith(springjunit4classrunner.class)

@contextconfiguration(locations = )

@transactional

@transactionconfiguration(transactionmanager = "transactionmanager", defaultrollback = true)

public class testhibernate

[size=medium] 這種方法,雖然直接簡單,但很多專案中喜歡把所有配置檔案進行統一管理並分類彙總到不同的資料夾下,例如:將所有配置檔案放到com.config包下。那麼測試的時候就還得手動將log4j.properties或log4j.xml移動到根目錄下,但這麼做,專案簡單還行,如果是大型專案,需要載入很多配置檔案時,還是恨麻煩也容易出問題的。因此並不推薦。

[/size]

[size=medium][color=darkred]解決辦法2:推薦方法[/color][/size]

[size=medium] 新建junit4classrunner類:[/size]

public class junit4classrunner extends springjunit4classrunner catch (filenotfoundexception ex)

}public junit4classrunner(class<?> clazz) throws initializationerror

}

[size=medium] 引用此類:[/size]

[size=medium] 這樣,在啟動junit測試時,spring就會載入log4j了。而且保持了靈活性。

ps:junit載入spring的runner(springjunit4classrunner)要優先於spring載入log4j,因此採用普通方法,無法實現spring先載入log4j後被junit載入。所以我們需要新建junit4classrunner類,修改springjunit4classrunner載入log4j的策略。這樣載入log4j就會優先於載入spring了。[/size]

Junit單元測試使用log4j輸出日誌

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!junit spring log4j整合之所以麻煩,是因為spring與log4j的整合,是放在web.xml裡的,隨tomcat啟動後,spring才會載入log4j,而用junit測試是不需要tomcat啟動的,所以junit與log4j的整合...

JUnit4(單元測試)

junit4是乙個編寫重複測試的簡單框架,junit4的最大改進是大量使用註解 元資料 很多實際執行過程都在junit的後台做完了,而且寫test case的類不需要繼承testcase,只需要在所要做test case的方法前加 test註解即可。大大簡化了進行單元測試所要做的工作。讓junit執...

單元測試Junit4

單元測試 單元測試即所謂的白盒測試,跟main方法差不多,不過更加的方便,更能提交效率 這裡記錄的是用idea進行單元測試,eclipse大概就是快捷鍵不一樣了,其他都是一樣的 我們這裡用的是junit4進行單元測試 進行單元測試,一般都建立乙個與src同級的test目錄,用來放進行單元測試的類,用...