如何对Entity Framework Core进行单元测试
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍如何对Entity Framework Core进行单元测试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、引言我们先来讲解如何对EntityFramewor
千家信息网最后更新 2025年01月19日如何对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 DbSetBlogs { 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安全错误
数据库的锁怎样保障安全
hbase后端图数据库
山东济南浪潮服务器哪家服务好
江苏数据库防伪技术
服务器处理器和普通处理器对比
c 软件开发升级怎么做
读零的数据库
金蝶破解数据库激活命令
漳州市国家网络安全宣传
怎么确定数据库连接池的个数
网站服务器管理主要做什么
作业查重系统用什么软件开发
防火墙怎么防护无线网络安全的
camelot服务器
cdn加速服务器违法吗
大学软件开发买什么电脑
宝山区创新数据库服务价格查询
电脑版的服务器可以装模组吗
数据库与数据结构试题
广东互联网软件开发机构
防网络安全的画报四年级
浙江net软件开发定制费用
中职网络技术题库
数据库登陆界面c
网络安全中的网络舆情
sce数据库设置
固定公网ip怎么加云服务器
深圳市网络安全宣传周
我的世界网易版怎么搜服务器号
软件开发笔试数据库
软件开发怀孕还能上班吗