下面是我試圖寫JUnit測試的方法:測試使用Junit調用Logback Log統計信息?
方法我想測試:
//logger declared outside of method in Class
private static Logger LOGGER = LoggerFactory.getLogger(PersonService.class);
public void showOutputOfIdentifications(int age) {
if(age>25){
LOGGER.info("Over 25");
}else{
LOGGER.info("25 or Under");
}
}
如何測試,以驗證正確的Logback
日誌語句已被稱爲?
在我的測試中,我試圖模擬logger
並驗證它是否被調用,但是這不起作用?
電流測試嘗試:
@Test
public void testShowOutputOfIdentifications() throws ParseException{
int age = 10;
Logger LOGGER_mock = mock(Logger.class);
//call method under test
showOutputOfIdentifications(age);
verify(LOGGER_mock).info("25 or under");
}
當前失敗的測試輸出:
Wanted but not invoked:
logger.info(
"25 or under "
);
Actually, there were zero interactions with this mock.
被測試的類可能有一個使用的靜態記錄器LOGGER。你必須注入你的模擬器作爲記錄器。創建另一個記錄器不會被調用。 – Fildor
謝謝,請舉出這個例子,我編輯了原始的方法來顯示我的靜態記錄器# – java123999
關鍵是:你需要**控制你的「正在測試的代碼」使用的對象。如果你有一個工廠爲你創建一個對象,然後這個對象被分配到你的類中,你無法控制。 – GhostCat