可能出现什么问题?
我已经开始为我的新J2EE项目编写hibernate域类,并且在初始分析期间,我觉得域类中的以下内容可能会出错,这使得我需要为他们编写自动化测试以提前捕获它们/ p>
是否针对这些更改测试域类是否称为单元测试,我不确定它是否在测试时涉及数据库。我需要的是一种测试我的域类的方法,以确保它们不会因为任何上述变化而被破坏,无意中,当然。
重要假设:数据库实体(表,约束,索引)已经准确创建,并且没有错误,因为数据类型,大小等已经准确定义。 换句话说,作为“域类的(单元)测试”的一部分,我们不会测试模式中的潜在错误。以下示例: *数据类型及其大小是正确的 *如果存在必要的约束(PK,FK,UK,索引等)并且它们是正确的
自动测试域类
对于问题1,2,4 - 使用:在hibernate配置文件中验证。 将记录(只是必填字段就足够了)保存到相关表中的简单测试将确保映射中不存在这些问题。断言:不应该抛出任何异常。
对于问题3 - 如果遗漏了任何字段,将捕获保存包含所有字段的记录的简单测试。断言:不应该抛出任何异常。
对于问题5 - 需要测试用例,该测试用例将插入包含具有最大边界条件的所有字段的记录。断言:不应该抛出任何异常。
总结:使用填充了最大边界值的所有字段保存记录的测试用例将足以测试hibernate域类。断言:不应该抛出任何异常。
问题
提前感谢您的意见。
答案 0 :(得分:1)
您的假设是正确的,对域模型进行单元测试非常重要,以便每次数据库更改时都运行它们以及实体。 我正在使用类似的程序来测试JPA实体,实现了创建JUnit测试的基础框架,用于测试默认设计的CRUD功能。 通过调用DAO控制器的函数来运行测试,以便对这些函数进行测试,因为这些函数还取决于实体的结构及其关系。 然后还添加了与特定模型和逻辑相关的测试。主 - 细节关系,不允许级联删除,或只允许在满足条件时发生某些事情等。
在您的支票清单中,在第5点还添加其他验证检查,即不是可空字段,唯一约束等。
JUnit只是被提及,因为我已成功使用它,可以使用nunit,testng或任何其他单元测试框架。
答案 1 :(得分:1)
1)上述论点是否有意义?如果没有,为什么?
2)如果有意义,实际实施的技术是什么?那是JUnit还是TestNG等?
Junit(http://junit.org/) PowerMock(https://code.google.com/p/powermock) Mockito(https://code.google.com/p/mockito/)
或强>
Junit PowerMock EasyMock(http://easymock.org/)。