[Abp vNext 源码分析] - 18. 单元测试

简介

ABP vNext 框架使用 xUnit 作为单元测试组件,官方的所有模块都编写了大量的 单元/集成测试 确保功能正常。由于 ABP vNext 模块化系统的原因,开发人员在建立单元测试项目的时候需要集成 Volo.Abp.UnitTest 项目,这样在执行单元测试的时候才不会缺少必要组件。

分析

ABP vNext 单元测试相关的类型最核心的是集成测试基类 AbpIntegratedTest 和 MVC 专用测试基类 AbpAspNetCoreIntegratedTestBase ,这两个基类核心工作就是初始化 IoC 容器并且初始化整个模块系统,只不过后者对 控制器 相关的组件进行了初始化配置,让开发人员可以针对 控制器 进行单元/集成测试。
在这里插入图片描述

从上图可以看到两个基类都继承自 AbpTestBaseWithServiceProvider 基类,在这个基类里面将 IServiceProvider 作为一个抽象成员。 这是因为 MVC 和测试基类的 ServiceProvider 来源不一样 ,一个是 ABP vNext 根据 Application 类已注册 IoC 容器构建的,另一个使用的是 IHost 测试主机内的 ServiceProvider 。

单元测试执行本质上就是将测试类进行实例化,然后调用对应的单元测试方法,所以测试基类的初始化动作都是放在对应的无参构造函数。

虽然 Volo.Abp.UnitTest 也是单独的一个项目,它的 AbpTestBaseModule 是没有任何动作,仅仅是为了同其他项目保持一致,内部是没有任何代码。

using Volo.Abp.Modularity;

namespace Volo.Abp
{
    public class AbpTestBaseModule : AbpModule
    {

    }
}

集成测试基类

一般来说,我们会直接从 AbpIntegratedTest 继承并实现我们需要的单元测试基类,包括 ABP vNext 官方的默认模版也是这样。集成测试基类的核心代码很简单,就是在无参构造函数的内部进行初始化动作,且在过程中按顺序执行两个生命周期方法。

简易流程图:
在这里插入图片描述

public abstract class AbpIntegratedTest : AbpTestBaseWithServiceProvider

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值