除非您作为测试特定的数据库操作(例如验证是否可以查询或更新数据库),否则您的JUnits不应该写入真正的数据库。相反,您应该模拟数据库类。这样,您实际上就不必连接和修改数据库,因此不需要清理。
您可以通过几种不同的方式模拟您的课程。您可以使用像JMock这样的库,它将为您完成所有执行和验证工作。我个人最喜欢的方法是使用依赖注入。通过这种方式,我可以创建实现我的存储库接口的模拟类(您正在为数据访问层使用接口吗? ;-)),并且我只实现具有已知操作/返回值的所需方法。
//Example repository interface.
public interface StudentRepository
{
public List<Student> getAllStudents();
}
//Example mock database class.
public class MockStudentRepository implements StudentRepository
{
//This method creates fake but known data.
public List<Student> getAllStudents()
{
List<Student> studentList = new ArrayList<Student>();
studentList.add(new Student(...));
studentList.add(new Student(...));
studentList.add(new Student(...));
return studentList;
}
}
//Example method to test.
public int computeAverageAge(StudentRepository aRepository)
{
List<Student> students = aRepository.GetAllStudents();
int totalAge = 0;
for(Student student : students)
{
totalAge += student.getAge();
}
return totalAge/students.size();
}
//Example test method.
public void testComputeAverageAge()
{
int expectedAverage = 25; //What the expected answer of your result set is
int actualAverage = computeAverageAge(new MockStudentRepository());
AssertEquals(expectedAverage, actualAverage);
}