数据访问层c#的单元测试

unit testing for Data access layer c#

我有以下方法,其中业务层与数据访问层交互并返回集合对象。我是单元测试的新手,但需要向解决方案添加自动化单元测试。我阅读了多篇与单元测试相关的文章和理论,但我对如何进行感到困惑。如果有人可以指导我的方法,那将非常有帮助,

[DataObjectMethod(DataObjectMethodType.Select, true)]
public static WorkQueueBE GetItemByDetailsID(int detailsID)
{  return WorkQueueDB.GetItemByDetailsID(detailsID); }

此方法调用数据库层中的 GetItemsByDetailsID 方法,后者又调用存储过程,从数据库中获取数据,填充集合并returns一个对象。

我将对评论进行一些总结并添加一些新想法。你写

This method gives call to GetItemsByDetailsID method in db layer, which in turn calls a stored procedure, gets the data from database, fills the collection and returns an object.

对此的评论是 -> 单元测试应该只测试逻辑的一个孤立部分,即单个方法。不是整个流程,那是集成测试。

从我在您的代码片段中看到的情况来看,您使用了具体 类。如果你真的想让你的应用程序易于测试,你需要使用接口和抽象 类 ,它们可以实例化为具体 类 以及容易模拟和存根。学习如何实现接口、抽象 类 和具体 类 的一种自然方法是进行测试驱动开发。从一个小项目开始并从那里学习 :)

如果我想对您提供的方法进行单元测试,我会将您的逻辑与数据访问层分开。我将通过使数据访问层 类 实现它们应该做的事情的接口来做到这一点。这样我就可以模拟数据访问层和 return 一个特定的数据片段,这只是我需要为业务层方法创建单元测试的部分。毕竟,在这种情况下,我想测试业务层方法的逻辑,而不是数据访问层方法的逻辑。

开始编写单元测试友好的代码非常困难,但是当您开始掌握时,您会爱上它的:)

这是很多理论,没有具体的例子,因为我认为你需要从你自己的一个小项目开始,并按照 TDD 的方式进行,通过这样做你将了解单元测试的一切工作原理。

一些帮助您入门的链接 https://msdn.microsoft.com/en-us/library/aa730844(v=vs.80).aspx https://msdn.microsoft.com/en-us/library/ff847525(v=vs.100).aspx http://www.codeproject.com/Articles/321154/Test-Driven-Development-TDD-in-Csharp

Pluralsight 也有一些这方面的课程。希望这对您有所帮助!