ASP.NET Core搭建多层网站架构【3-使用xUnit编写单元测试之简单方法测试】

2020/01/28, ASP.NET Core 3.1, VS2019, xUnit

摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【3-使用xUnit编写单元测试之简单方法测试】

文章目录
此分支项目代码
上一章节已经建立了Common公共类库,本章节介绍编写简单的单元测试,对上一章节的公共类库中EnumExtension方法编写单元测试,同时也是介绍上一章节中公共类库EnumExtension的使用方法

新建测试项目

在tests解决方案文件夹下,新建xUnit测试项目,存放在解决方案tests路径下:

我这里测试项目名称规则为"测试目标项目名称+Tests",这里测试的是Common项目,所以测试项目取名CommonTests
项目新建成功后,记得要引用MS.Common类库

新建一个枚举用于测试

既然是为了测试枚举方法,当然需要先有一个枚举StatusCodeEnum.cs类,就存放在测试项目下:

using System.ComponentModel;

namespace CommonTests
{
    public enum StatusCode
    {
        [Description("已删除")]
        Deleted = -1,//软删除,已删除的无法恢复,无法看见,暂未使用
        [Description("生效")]
        Enable = 0,
        [Description("失效")]
        Disable = 1//失效的还可以改为生效
    }
}

编写枚举方法测试代码

把原先的UnitTest1.cs删除,新建EnumExtensionTest.cs类:
可以看到我这里测试类命名规则为"测试目标类名称+Test",这里测试的是EnumExtension类,所以取名为EnumExtensionTest
将EnumExtensionTest类修改为pulic类型
在其中添加测试一个测试方法:

[Fact]
[Trait("GetEnum", "itemName")]
public void ShouldGetEnumFromName()
{
    Assert.Equal(StatusCode.Deleted, "Deleted".GetEnum<StatusCode>());
}
  • 测试类必须是public类型
  • 测试用例需要打上[Fact]特性标记,Fact特性还可以给测试用例取别名
  • Trait特性可以对测试用例进行分组说明
  • 更多特性和使用方法可以搜索相关资源
  • 测试方法命名规则为"Should+测试方法",此处测的是GetEnum方法,而此方法有多个重载,所以补充FromName作为解释说明
  • Assert是断言,判断StatusCode.Deleted值是否和"Deleted".GetEnum<StatusCode>()相同,如果相同表示测试通过

运行测试

在VS中"测试"-"测试资源管理器",打开测试资源管理器:

在测试资源管理器中已经可以看到我们刚刚写的测试用例。
点击运行所有测试:

等待测试结束,便会给出测试结果:

以上便是最简单的单元测试流程
针对EnumExtension方法完整的测试用例代码:

using MS.Common.Extensions;
using Xunit;

namespace CommonTests
{
    public class EnumExtensionTest
    {
        [Fact]
        [Trait("GetEnum", "itemName")]
        public void ShouldGetEnumFromName()
        {
            Assert.Equal(StatusCode.Deleted, "Deleted".GetEnum<StatusCode>());
        }
        [Fact]
        [Trait("GetEnum", "itemValue")]
        public void ShouldGetEnumFromValue()
        {
            Assert.Equal(StatusCode.Disable, 1.GetEnum<StatusCode>());
        }

        [Fact]
        [Trait("GetEnumName", "itemValue")]
        public void ShouldGetEnumNameFromValue()
        {
            Assert.Equal(StatusCode.Enable.ToString(), 0.GetEnumName<StatusCode>());
        }

        [Fact]
        [Trait("GetEnumValue", "itemName")]
        public void ShouldGetEnumValueFromName()
        {
            Assert.Equal((int)StatusCode.Disable, "Disable".GetEnumValue<StatusCode>());
        }

        [Fact]
        [Trait("GetDescription", "Enum")]
        public void ShouldGetDescriptionFromEnum()
        {
            Assert.Equal("已删除", StatusCode.Deleted.GetDescription());
        }
    }
}

总结/说明

  • 添加了一个简单的单元测试用例,介绍了最基本的单元测试流程和方法
  • 之后还会有《使用xUnit编写单元测试之复杂业务测试》,其中涉及到针对有DI依赖注入方法的获取及测试

原文地址:https://www.cnblogs.com/kasnti/p/12237965.html

时间: 2024-11-17 08:49:12

ASP.NET Core搭建多层网站架构【3-使用xUnit编写单元测试之简单方法测试】的相关文章

ASP.NET Core搭建多层网站架构【4.1-工作单元和仓储设计】

2020/01/28, ASP.NET Core 3.1, VS2019, UnitOfWork, Repository 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[4.1-工作单元和仓储设计] 使用泛型仓储和工作单元模式封装数据访问层基础的增删改查等方法 文章目录 此分支项目代码 关于本章节的工作单元模式: 泛型仓储封装了通用的增删改查方法,由工作单元统一管理仓储以保证数据库上下文一致性. 要获取仓储,都从工作单元中获取,通过仓储改动数据库后,由工作单元进行提

ASP.NET Core搭建多层网站架构【1-项目结构分层建立】

2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[1-项目结构分层建立] 文章目录 此分支项目代码 此章节介绍了本项目的分层结构,建立了各层级的类库,修改网站项目的启动配置 新建解决方案 新建空白解决方案MSDemo 建立以下解决方案文件夹: 一个解决方案文件夹相当于一个层级,解决方案下是src和tests.而src下分了七个层级,并且每个层级向上依赖,不会出现2.WebCore中的内容依赖5.

ASP.NET Core搭建多层网站架构【2-公共基础库】

2020/01/28, ASP.NET Core 3.1, VS2019, Snowflake雪花算法ID, Enum枚举方法扩展, Lambda方法扩展, Json方法封装 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[2-公共基础库] Snowflake雪花算法ID.Enum枚举方法扩展.Lambda方法扩展.Json方法封装 文章目录 此分支项目代码 本章节介绍了MS.Common类库中一些常用公共方法,可以自行添加自己积累的一些库 添加包引用 向MS.Co

ASP.NET Core搭建多层网站架构【4.1-网站数据库实体设计及映射配置】

2020/01/28, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[4.1-网站数据库实体设计及映射配置] 文章目录 此分支项目代码 本章节介绍后台管理的网站数据库实体设计 需求分析 首先要实现的功能有用户登录.角色管理.日志记录 大概有四张表:用户表.密码表.角色表.日志表 日志表: 用户表: 密码表: 角色表: 好像博客园md不支持表格功能?所以只能截图展示,excel表格上传至项目docs文件夹中 字段设计

ASP.NET Core搭建多层网站架构【5.1-WebCore网站核心配置】

2020/01/29, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[5.1-WebCore网站核心配置] 统一封装网站核心配置,注册跨域策略,实例化雪花算法,后期可扩展添加多语言支持 文章目录 此分支项目代码 本章节介绍了统一封装网站核心配置,注册跨域策略,实例化雪花算法,后期可扩展添加多语言支持 添加网站配置及跨域配置 在MS.WebApi应用程序appsettings.json中添加以下节点: "SiteSe

ASP.NET Core搭建多层网站架构【6.2-使用AutoMapper映射实体对象】

2020/01/29, ASP.NET Core 3.1, VS2019, AutoMapper.Extensions.Microsoft.DependencyInjection 7.0.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[6.2-使用AutoMapper映射实体对象] 用依赖注入的方法使用AutoMapper映射 文章目录 此分支项目代码 本章节介绍了使用AutoMapper映射实体对象的注册部分,用依赖注入的方法使用AutoMapper映射,具体

ASP.NET Core搭建多层网站架构【8-使用AOP动态拦截器进行服务层日志记录】

2020/01/29, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[7-编写角色业务的增删改查] 编写最简单的增删改业务,涉及到DI依赖注入的使用.AutoMapper的使用.工作单元与仓储的使用.雪花Id的生成 文章目录 此分支项目代码 本章节介绍了编写最简单的增删改查业务,涉及到DI依赖注入的使用.AutoMapper的使用.工作单元与仓储的使用 原文地址:https://www.cnblogs.com/ka

ASP.NET Core搭建多层网站架构【8.2-使用Castle.Core实现动态代理拦截器】

2020/01/30, ASP.NET Core 3.1, VS2019, 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[8.2-使用Castle.Core实现动态代理拦截器] 使用Autofac替换原生的依赖注入 文章目录 此分支项目代码 本章节介绍了使用Autofac代替原生的依赖注入,使用Autofac为的是后面配合Castle.Core做AOP动态代理 原文地址:https://www.cnblogs.com/kasnti/p/12244544.html

ASP.NET Core搭建多层网站架构【10-xUnit单元测试之集成测试】

2020/01/31, ASP.NET Core 3.1, VS2019, 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[10-xUnit单元测试之集成测试] 文章目录 此分支项目代码 本章节介绍了 原文地址:https://www.cnblogs.com/kasnti/p/12246180.html