我是单元测试的新手。我没有找到完整的单元测试CRUD应用程序的示例/示例。
我想在使用实体框架的MVC应用程序中添加单元测试。
每次运行测试时,我们是否真的在数据库中添加数据? 我们是否为每个项目创建单独的单元测试项目?
答案 0 :(得分:1)
在单元测试中使用数据库将违反上述“原则”
对于单元测试,您需要抽象使测试变慢或依赖于全局状态的所有内容 在你的情况下,只需抽象数据库操作并在测试中模拟它 实体框架核心提供了很好的In-Memory Database Provider,您可以在其中编写快速单元测试,这也将测试数据库操作。
要使用模拟数据库编写测试,您需要配置模拟对象以返回或断言测试的预期数据
如果使用override void interact
数据库提供程序,则需要插入测试数据或读取数据库以声明预期结果。
为每个“测试”项目拥有自己的测试项目是常见做法,但您可以随意创建自己的解决方案结构,以满足您的需求和期望。主要的想法是,您将能够快速找到某些行为或具体方法的相应测试。