如果我有数据访问层 (nHibernate),例如一个名为 UserProvider 的类 和一个业务逻辑类 UserBl,我是否应该同时测试它们的方法 SaveUser 或 GetUserById,或者 DA 层中从 BL 层调用的任何其他公共(public)方法。这是冗余还是常见做法?
单元测试DA层是通用的,还是属于集成测试领域的? 有测试数据库好还是测试时创建数据库数据好?
感谢任何帮助。
最佳答案
这个没有正确答案,这真的取决于。有些人(例如 Roy Osherove)说您应该只测试具有条件逻辑(IF 语句等)的代码,这些代码可能包含也可能不包含您的 DAL。有些人(通常是从事 TDD 的人)会说您应该测试所有内容,包括 DAL,并以 100% 的代码覆盖率为目标。
就我个人而言,我只在它具有逻辑时才对其进行测试,因此最终会测试一些 DAL 方法,而另一些则没有。大多数时候你只是检查你的 BL 调用你的 DAL,这有一些优点,但我认为没有必要。我认为进行端到端涵盖应用程序的集成测试更有意义,包括涵盖 GetUserById 等内容的数据库。
无论哪种方式,您可能已经知道这一点,但请确保您的单元测试不接触实际数据库。 (这样做没有问题,但这是集成测试而不是单元测试,因为它需要更长的时间并且涉及复杂的设置,并且应该单独运行)。
关于unit-testing - 我应该对数据访问层进行单元测试吗?这是一个好的做法吗?如何去做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3333120/