简单的问题。如果我使用 spring-data 为我的 DAO 层生成 CRUD 方法,我还应该针对生成的方法编写单元测试吗?或者这相当于单元测试库代码?
提前致谢。
编辑:为了澄清,我问除了在发布之前运行的一套集成测试之外,是否需要编写单元测试。例如, DAO 层的 findAll() 方法的单元测试将类似于以下内容:
class DepartmentDAOTest extends spock.lang.Specification {
/* ... */
def "returns all departments"() {
setup:
def result = new List<Department>()
when:
result = dao.findAll()
then:
result.size() == EXPECTED_SIZE
}
}
而集成测试可能由测试团队或开发人员手动运行,可能在标记新版本之前。这可以使用JWebUnit或Geb自动化,并测试每个组件(包括平台)以确保它们在“集成”时按预期工作。
如果我要使用 JdbcTemplate 手动编写 DAO 实现,那么毫无疑问我应该对每个方法进行单元测试。当我对服务层(调用 DAO 层)进行单元测试时,我可以模拟 DAO 层,因此我不会对其进行两次测试。
如果我调用 pdfbox 之类的第三方库来生成 PDF,那么每种方法都可以正常工作(因为它是作为 pdfbox 项目的一部分进行测试的)。我没有测试他们的 drawSquare 方法是否真的画了一个正方形,但是在集成测试期间,我会看到我的导出 PDF 功能正确地以我们想要的方式导出 PDF。
所以这个问题真的应该改写为“我应该在哪个测试阶段测试我对 spring-data 的使用?”