我是单元测试的新手,所以我一直在尝试编写一些示例来学习使用它们的正确方法。我有一个示例项目,它使用Entity Framework连接到数据库。
我使用由数据访问层组成的n层体系结构,该数据访问层使用EF查询数据库,业务层调用数据访问层方法查询数据库并使用检索到的数据执行其业务目的服务层,由简单调用业务层对象的WCF服务组成。
我是否必须为每一层(数据访问,业务层,服务层?
)编写单元测试代码哪种方法可以为查询数据库的方法编写单元测试代码?下一个代码是我的数据访问层中的一个方法示例,它对数据库执行select,它的单元测试应该如何?
public class DLEmployee
{
private string _strErrorMessage = string.Empty;
private bool _blnResult = true;
public string strErrorMessage
{
get
{
return _strErrorMessage;
}
}
public bool blnResult
{
get
{
return _blnResult;
}
}
public Employee GetEmployee(int pintId)
{
Employee employee = null;
_blnResult = true;
_strErrorMessage = string.Empty;
try
{
using (var context = new AdventureWorks2012Entities())
{
employee = context.Employees.Where(e => e.BusinessEntityID == pintId).FirstOrDefault();
}
}
catch (Exception ex)
{
_strErrorMessage = ex.Message;
_blnResult = false;
}
return employee;
}
答案 0 :(得分:8)
以下是基于领域驱动设计原则的2美分:
如果您刚开始进行单元测试,我建议您阅读Kent Beck的Test Driven Development by Example和Gerard Meszaros xUnit Test Patterns
答案 1 :(得分:1)
我不得不说是有必要对每一层进行单元测试。通过这样做将提供更好的覆盖范围。它的维护部分可能具有挑战性,因为你最终会得到大量的单元测试用例,但是当有人试图打破一些非常重要的逻辑时,它确实有助于避免巨大的陷阱。最好使用Jenkins等连续集成工具自动对所有层进行单元测试。
至于您在单元测试的数据库层上的示例,请保持简单,就像您拥有的那样,并根据元数据(如必填字段,单元格数据大小等)进行断言。