C#单元测试n层mvc应用程序

时间:2017-12-24 16:27:24

标签: asp.net-mvc unit-testing

我是单元测试的新手。我没有找到完整的单元测试CRUD应用程序的示例/示例。

我想在使用实体框架的MVC应用程序中添加单元测试。

每次运行测试时,我们是否真的在数据库中添加数据? 我们是否为每个项目创建单独的单元测试项目?

1 个答案:

答案 0 :(得分:1)

  • 单元测试应该快速
  • 单元测试应该独立于其他应用程序的单元执行
  • 单元测试应该与其他测试分开执行

在单元测试中使用数据库将违反上述“原则”

  • 访问数据库很慢
  • 数据库代表应用程序的“全局状态” - 因此使用相同的数据库将强制您为每个测试设置和清除数据库,并删除并行运行测试的可能性。

对于单元测试,您需要抽象使测试变慢或依赖于全局状态的所有内容 在你的情况下,只需抽象数据库操作并在测试中模拟它 实体框架核心提供了很好的In-Memory Database Provider,您可以在其中编写快速单元测试,这也将测试数据库操作。

要使用模拟数据库编写测试,您需要配置模拟对象以返回或断言测试的预期数据 如果使用override void interact 数据库提供程序,则需要插入测试数据或读取数据库以声明预期结果。

为每个“测试”项目拥有自己的测试项目是常见做法,但您可以随意创建自己的解决方案结构,以满足您的需求和期望。主要的想法是,您将能够快速找到某些行为或具体方法的相应测试。