简单的问题。如果我使用spring-data为我的DAO层生成CRUD方法,是否还应该针对生成的方法编写单元测试?或者这将是单元测试库代码的等价物?我应该单元测试生成的Java代码吗?
在此先感谢。
编辑:为了说明问题,我在询问是否需要编写单元测试以及一套在发布之前运行的集成测试。例如,unit test为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
}
}
鉴于一个integration test可能会通过用手测试团队或显影剂进行运行,可能标记新的前发布。这可以使用JWebUnit或Geb自动化,并且测试每个组件(包括平台)以确保它们在“集成”时按预期工作。
如果我使用JdbcTemplate手动编写DAO实现,那么我应该不会单元测试每种方法。当我单元测试服务层(调用DAO层)时,我可以嘲笑DAO层,所以我不测试两次。
如果我为生成PDF格式的第三方库(如pdfbox)进行调用,每种方法都有工作的期望(因为它是作为pdfbox项目的一部分进行测试的)。我不测试他们的drawSquare方法真的绘制了一个正方形,但在集成测试期间,我会看到我的导出PDF功能按照我们希望的方式正确地导出PDF。
所以这个问题应该重新措词为:“在哪个测试阶段测试我的春季数据使用情况?”
你绝对应该测试生成的代码_somehow._ –
我的猜测是它应该在集成测试期间完成。 – Joe