我有一个名为PersonDAO的DAO类,我正在使用它来获取有关People from Database的信息。我想编写单元测试来检查数据库连接。这就是我到目前为止所拥有的
@Test( expected= SQLException.class)
public void testDatabaseConnection()
throws Exception {
}
另外,如何为findAll()方法编写单元测试?如果我将人物信息存储在地图中,这就是我所拥有的。但是,我想知道如果我有数据库而不是地图会发生什么变化
@Test
public void testFindAll()
throws Exception {
Map< Integer, PersonDTO > people = new LinkedHashMap<>();
people = PersonDAO.findAll();
assertEquals( PersonDTO.getTotalDept(), people.size() );
}
答案 0 :(得分:2)
基本上,如果您想在“实时”数据库上测试DAO,那么您正在讨论集成测试。
PersonDTO personDto;
Connection connection;
@Before
public void setUp() {
personDto = new PersonDTO();
connection = ConnectionUtil.someMethodThatReturnsConnection();
}
@Test
public void testIfConnectionNotNull() {
assertNotNull(connection);
}
@Test
public void testIfDAONotNull() {
assertNotNull(personDto);
}
@Test
public void testFindAll() {
// Let's presume you have 4 records
assertEquals(4, personDto.findAll().size());
}
如果你想留在JUnit,Mockito,EasyMock ......就是答案。
答案 1 :(得分:0)
看一下这个问题,回答你的第一个问题 - 如何创建数据库连接。 JUNIT test case for connection with database
要回答第二个问题,关于如何测试"findAll"
,您需要问问自己这种方法的作用。例如。它会显示所有用户记录,然后首先检查表中有多少用户并将其存储在变量中。然后插入另一个用户并再次调用findAll并计算返回的行数。然后测试你是否有previousCount + 1 == currentCount