我必須編寫一個方法,它能夠在數據庫中找到隨機度假。但是當我在測試中使用這部分時爲什麼不隨機工作?
Random id = new Random();
vacationId = id.nextInt(2500);
我得到NullPoiterExeption
。 但是,當我只是打印
vacationId = 2500;
或其他一些數字,一切都沒問題。
這是整個方法
public Vacation findRandomVacation() {
Integer vacationId = null;
Query query = entityManager.createQuery("from Vacation v where v.id = :id")
.setParameter("id", vacationId);
if (query.getResultList().isEmpty()) {
Random id = new Random();
vacationId = id.nextInt(2500);
query = entityManager.createQuery("from Vacation v where v.id = :id")
.setParameter("id", vacationId);
}
return (Vacation) query.getResultList().get(0);
}
這是測試的主體:
@Test
public void testVacationApprovalResultDao() {
Vacation testVacation = findRandomVacation();
VacationApproval testVacationApproval = findVacationApprovalDAO(testVacation);
List<VacationApprovalResult> testVacationApprovalResult = getVacationApprovalResultByManager(testVacationApproval);
Set<VacationApprovalResult> setVacationApprovalResult = testVacationApproval.getVacationApprovalResults(); //mistake is here
List<VacationApprovalResult> testVacationApprovalResult2 = new ArrayList<VacationApprovalResult>();
testVacationApprovalResult2.addAll(setVacationApprovalResult);
assertEquals(testVacationApprovalResult, testVacationApprovalResult2);
}
我知道每個ID都有假期。當我把這個vacationId = 2500;我只改變了隨機部分,而不是第一個字符串 –
@JaneMakedonskaya:什麼字符串?沒有任何字符串。隨機'本身就很好 - 所以要麼有更多的背景,你沒有告訴我們,或者是有些奇怪的事情正在發生。當你沒有提供'id'參數的值時,我真的不希望它會變得那麼遠。我懷疑你的診斷不太正確。它沒有幫助你沒有向我們顯示異常實際發生的地方 - 請將堆棧跟蹤編輯到你的問題中。 –
我的意思是線。我不是母語英語的人,對不起。在這個地方,豁免情況發生在評論 –