我想测试我的应用程序的存储层。存储层使用JPA访问数据库并使用数据库模式映射模型。
例如,为可视化书籍的应用程序采用存储层。该模型有两个实体:书籍和作者。一本书可以有一个或多个作者。存储层公开了列出书籍,作者或更复杂操作的方法,如特定作者的所有书籍。
我试图了解我在存储层中测试的方式和内容。
数据库
模型
存储逻辑(DAO)
存储层
欢迎提出其他问题和建议。
答案 0 :(得分:1)
非常广泛的话题,容易出现个人经历和品味。我不相信你能在这里得到一个好的答案。
实际上,它是集成测试而不是单元测试。要进行单元测试,你必须模拟几乎所有东西。
是的,您的数据库应包含众所周知的数据。它不仅应包含您用于特定测试的数据(例如,只有一位作者),还应包含其他"兄弟"数据来捕捉副作用,而不是独特的结果......
有一篇关于数据层测试的好文章: http://www.petrikainulainen.net/writing-tests-for-data-access-code/
再一次,容易讨论(所以如果有人不同意请写下你自己的答案而不是参与评论反弹),但更具体一点:
测试连接没有意义,它将与其他测试和有意义的堆栈跟踪相结合。事实上你在测试中有连接,并不意味着你将在实际代码中拥有它,因为它取决于perstitence配置。
你怎么测试你的模型。吸气者和二传手......不。模型中没有连接,只有对象/集合引用。要测试关系到db的正确映射,需要DB后端和JPA处理它们,因此无法在没有集成测试的情况下测试关系。如果字段和数据库表之间不匹配,则简单插入将引发错误。所以是的,你至少应该坚持一个对象,为了映射验证。
是的,你应该测试你的检索/搜索方法。这是您的集成测试,也是唯一可以找到所有层按预期工作的地方。