我正在为DAO调用编写单元测试,以便使用Hibernate将记录插入到数据库中。
这是交易性的,我以这种方式使用了@Transactional:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations={"/spring-servlet.xml"})
@Transactional
public class MyDaoTest {
@Autowired
private MyDao dao;
@Test
@Rollback(false)
public void testAddEmployee() {
// Create some data (line 1)
dao.addPerson(newPerson); // (line 2)
// Query DB (line 3)
// Check result (line 4)
} // (line 5)
}
在上面的代码中,只有在函数终止于第5行时才会提交操作。
事实是,在第3和第4行,我需要查询数据库,以检查是否已成功完成工作。但我不能这样做,因为我的数据仍未保留。
我可以做些什么来测试这个插页?有没有办法在函数结束之前提交?
我在这里添加更多信息。这是控制台输出:
Hibernate: select person0_.ID as ID1_, person0_.NAME as NAME1_ from PERSON person0_
Hibernate: insert into PERSON (NAME) values (?, ?)
Hibernate: select person0_.ID as ID1_, person0_.NAME as NAME1_ from PERSON person0_
测试我正在使用JUnit
答案 0 :(得分:1)
为了测试插入,您可以使用以下断言:
Assert.assertNotNull(dao.findById(newPerson.getId()));
对于删除检查,您可以尝试以下测试:
@Test
public void testDelete(){
...
dao.removePerson(person);
Assert.assertNull(dao.findById(person.getId()));
}