如何测试NHibernate应用程序:需要测试的四个特定项目

如何测试NHibernate应用程序:需要测试的四个特定项目,nhibernate,Nhibernate,发件人: 在测试NHibernate应用程序时,我通常 测试几件事: a) 我已经正确地创建了映射 b) 我映射了所有的持久属性 c) 我已经正确定义了级联 最重要的是,我的疑问 返回正确的结果。就是 最常见的是我真的 想测试一下吗 这些项目都是什么意思?它们是如何测试的?我会尝试给你一个简短的答案,特别是考虑到你已经有Ayende的优秀帖子可供参考。他实际上并没有显示Blog对象的代码、Blog表的数据库等价物或该文章中的映射,但这些代码都需要存在才能使他的示例正常工作 a) 映射正确意味着N

发件人:

在测试NHibernate应用程序时,我通常 测试几件事:

a) 我已经正确地创建了映射

b) 我映射了所有的持久属性

c) 我已经正确定义了级联

最重要的是,我的疑问 返回正确的结果。就是 最常见的是我真的 想测试一下吗


这些项目都是什么意思?它们是如何测试的?

我会尝试给你一个简短的答案,特别是考虑到你已经有Ayende的优秀帖子可供参考。他实际上并没有显示Blog对象的代码、Blog表的数据库等价物或该文章中的映射,但这些代码都需要存在才能使他的示例正常工作

a) 映射正确意味着NHib知道如何将Blog对象转换到Blog表,然后再转换回来。因为他的单元测试会持久化一个博客条目,然后从数据库中加载它,所以您可以假设所有被持久化和加载的属性的映射都必须正确映射

b) 这一个真正解决了映射的“完整性”。在他的示例中,他使用blog对象的Title属性,因此需要持久化的所有其他属性都是他的单元测试的一部分。他的单元测试可能包括需要持久化的完整Blog属性集

c) 这是指关联表级联的行为。例如,如果您想在保存博客条目时将和Blog.Comments自动持久化到Comments db表中,那么应该对其进行单元测试,也许可以证明您可以在保存博客后检索评论(Ayende在本文中没有显示这样的测试)

d) Ayende在这篇文章中没有显示查询测试,但是如果他有一个用例来检索在指定日期范围内创建的博客,他可能会在一周内对博客条目进行测试,然后证明他只能选择在指定日期创建的博客条目

这似乎是一个相对复杂的话题(事实的确如此!),但要摆脱神秘感,唯一的办法就是把手弄脏,然后去做

HTH,
贝里尔