我正在编写一些测试以确保所有 CRUD 方法都正常工作。他们每个人都工作正常,但测试 remove 方法似乎有点棘手。
在我的测试中,我正在这样做:
// remove
a = dao.select(1); // previously inserted in the DB
dao.remove(a);
assertNull(dao.select(a.getId()));
以及 DAO 类(仅选择和删除):
@Override
public AtividadeComercial select(int id) {
return em.getReference(AtividadeComercial.class, id);
}
@Override
public void remove(AtividadeComercial e) {
EntityTransaction t = em.getTransaction();
boolean active = t.isActive();
if(!active)
t.begin();
em.remove(em.getReference(e.getClass(), e.getId()));
if(!active)
t.commit();
}
但是测试后总是抛出一个javax.persistence.EntityNotFoundException
就行了remove
。这是正常行为还是真的有问题?抱歉,如果这看起来很明显,但我找不到答案。