Jan*_*aya 0 java testing random
我必须编写一个方法,它能够在数据库中找到随机假期.但是当我在测试中使用这部分时
Random id = new Random();
vacationId = id.nextInt(2500);
Run Code Online (Sandbox Code Playgroud)
我得到NullPoiterExeption.但是当我打印时
vacationId = 2500;
Run Code Online (Sandbox Code Playgroud)
或其他一些数字,一切都很好.
这是整个方法
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);
}
Run Code Online (Sandbox Code Playgroud)
这是测试的主体:
@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);
}
Run Code Online (Sandbox Code Playgroud)
我怀疑这是你得到的地方NullPointerException:
Integer vacationId = null;
Query query = entityManager.createQuery("from Vacation v where v.id = :id")
.setParameter("id", vacationId);
Run Code Online (Sandbox Code Playgroud)
这是在您设置它之前Random - 您将参数设置为空值.
说实话,这不是从数据库中查找随机记录的好方法,除非您知道每个ID从0到2499都有假期.
基本上,您希望随机选择在数据库中执行,就像数据所在的那样.另一种方法是获取所有假期ID,选择该组的随机元素,然后为其加载数据 - 但这也不愉快.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |