如何对Entity Framework Core进行单元测试
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍如何对Entity Framework Core进行单元测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、引言我们先来讲解如何对EntityFramewor
千家信息网最后更新 2025年11月14日如何对Entity Framework Core进行单元测试
这篇文章主要介绍如何对Entity Framework Core进行单元测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、引言
我们先来讲解如何对EntityFrameworkCore进行单元测试,这里我们使用内存数据库进行测试。使用内存数据库需要安装Microsoft.EntityFrameworkCore.InMemory这个包。
二、创建测试项目
我们还是以上面文章中创建的项目为例,在解决方案中添加一个测试项目,这里选择使用xUnit作为测试项目:
创建完成后的项目结构如下图所示:

我们首先在EFCoreTest项目中安装Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.InMemory这两个包,直接在NuGet里面安装即可,这里不在描述安装步骤。添加完成以后添加对实体的引用。
我们创建数据上下文,继承自DbContext:
////// 数据上下文,继承自DbContext/// public class EFCoreDbContext:DbContext{ ////// 通过DbContextOptions选项给父类构造传参 /// /// public EFCoreDbContext(DbContextOptions options):base(options) { } // DbSet属性 public DbSetBlogs { get; set; }}
我们在创建一个方法,返回类型是DbContextOptions类型:
public static DbContextOptionsCreateDbContextOptions(string databaseName){ var serviceProvider = new ServiceCollection(). AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var builder = new DbContextOptionsBuilder (); builder.UseInMemoryDatabase(databaseName) .UseInternalServiceProvider(serviceProvider); return builder.Options;}
最后编写测试代码,整体代码如下:
using EFCore.Model;using Microsoft.EntityFrameworkCore;using Microsoft.Extensions.DependencyInjection;using System;using Xunit;namespace EFCoreTest{/// /// 数据上下文,继承自DbContext/// public class EFCoreDbContext:DbContext{ /// /// 通过DbContextOptions选项给父类构造传参 /// /// public EFCoreDbContext(DbContextOptions options):base(options) { } // DbSet属性 public DbSet Blogs { get; set; }} public class UnitTest1 { public static DbContextOptions CreateDbContextOptions(string databaseName) { var serviceProvider = new ServiceCollection(). AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var builder = new DbContextOptionsBuilder(); builder.UseInMemoryDatabase(databaseName) .UseInternalServiceProvider(serviceProvider); return builder.Options; } /// /// 测试方法,这里使用异步 /// [Fact] public async void Test1() { var options= CreateDbContextOptions("batabase"); var context = new EFCoreDbContext(options); // 添加数据 context.Blogs.Add(new Blog() { Name = "ef core" }); // 保存 context.SaveChanges(); // 查询数据 var blog = await context.Blogs.FirstOrDefaultAsync(p => p.Id == 1); // 断言 Assert.NotNull(blog); } }} 在测试方法上面右键,选择"Live Unit Testing",这个是实时的,我们可以在输出窗口里面看到实时的信息:
启动测试,在输出窗口查看测试结果:
可以看到测试代码前面都打勾了,表示测试通过。我们修改测试代码,改为查询id为2的数据:
因为我们只添加了一条数据,没有id为2的那条数据,所以测试报错了。
到此为止,我们就完成了一个简单的单元测试。
以上是"如何对Entity Framework Core进行单元测试"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
测试
数据
项目
单元
代码
上下
上下文
方法
内存
内容
实时
属性
数据库
篇文章
类型
查询
输出
选择
到此为止
两个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
梦幻西游是哪个运营商的服务器
电脑服务器一直在主画面
安排软件开发进度
锡盟检察分院网络安全
网络安全运
徐州专业性网络技术市场价格
服务器账户安全
中国电信网络安全及维护规程
二道区智能网络技术诚信服务
软件开发真的是年轻人
数据库创建补表
svn服务器命令
数据库表在浏览窗口中不允许
数据库设计用户表格
温州工业网络技术服务
如何学好数据库运维工程师
高并发数据库效果图
武汉软件开发最好的学校
数据库排序按照什么
新疆网络安全基础概况
软件开发工具包测试流程方案
电算化审计软件开发
电信网络安全基础ppt
安徽电力应急软件开发推广
聚银软件开发公司
蚌埠软件开发培训班
泰拉瑞亚服务器怪物瞬移
网络安全大会2021冯琳
湖州 软件开发
软件开发公司技术团队