3
我想爲我的dao編寫一個Junit測試,但是我遇到了問題。這是我要測試的方法:用mockito命名查詢測試參數
public boolean boo(final String param) {
final Query query = this.entityManager.createNamedQuery("queryName");
query.setParameter(1, param);
boolean isExists = false;
if(query.getResultList().size() != 0) {
isExists = true;
}
return isExists;
}
這種方法的問題是:
query.setParameter(1, param);
當我寫的東西,如:
@Test
public void test() {
when(entityManager.createNamedQuery(queryName)).thenReturn(query);
when(query.getResultList()).thenReturn(new ArrayList());
//when(query.setParameter(1,project.getName())).thenCallRealMethod();
projectDao.boo(name);
}
查詢和EntityManager的被嘲笑。 我有NPE,這不是一個驚喜,我不能調用該方法,因爲查詢是和接口。 那麼有人可以告訴我在測試時在NamedQueries中設置參數的最佳方法嗎?
你想要測試什麼?我沒有看到斷言。你從哪裏得到你的查詢。如果查詢被嘲笑,你不應該得到一個NPE。如果你想測試實際的查詢,你正在創建一個集成測試,你通常必須設置你的DAO完全沒有嘲笑。 – joostschouten