我目前正在严重考虑我们的团队正在构建的单元测试一个asp.net mvc 3 web应用程序。单元测试:真正的数据库与嘲讽
问题是我们真的必须嘲笑很多东西,我认为我们的单元测试并没有涵盖所有与网络服务器和数据库相关的东西。
例子:
我有下面的代码的方法:
public List<Useraccount> GetUseraccounts(Company company)
{
return company.Useraccounts.ToList<Useraccount>();
}
我devloper抱怨说,他有注射假的公司对象他通过hisself准备。 他想从数据库中获得真实的对象。
我的问题: 在单元测试期间是否可以使用真实数据库(也可以是SQLite/SQLExpress或其他)?这有用吗? 有什么优点和缺点?我们不得不模拟太多的对象。例如,我们无法验证此类呼叫是否正常工作:
Useraccount useraccount = UnitOfWork.UseraccountRepository.Get(u => u.EnableCode == enableCode && u.IsEnabled == false).Single<Useraccount>();
听起来好像你可能模糊了* unit * testing和* integration * testing之间的界限。 – 2013-03-15 12:46:08
含义是什么?真正的数据库内容仅用于集成测试? – mosquito87 2013-03-15 12:49:14
我相信@四十二意味着你应该考虑两套测试。一个是关于单元测试,测试你的类做他们应该做什么,嘲笑依赖。然后,您可以进入下一级黑盒/集成测试,您可以在其中全面测试您的服务,但可以在需要的地方剔除第三方服务。 – Bronumski 2013-03-15 13:27:50