当前位置: 首页 > news >正文

Furion项目的单元测试

在.Net项目中如果要对Controller或者服务进行测试一般要用mock创建需要注入的实例, 要配置好这些实例还挺复杂的
Furion帮我们实现了单元测试的构造函数注入, 让单元测试变得简单, 具体步骤如下

在解决方面里面新增一个xunit的测试项目TestProject1 (测试项目一般单独放在test目录里面)
NuGet安装Furion.Pure和Furion.Pure.Xunit ; 版本要和项目统一
把解决方案里面的项目全部引入

添加一个启动类, 初始化Furion

using Furion.Xunit;
using Microsoft.Extensions.DependencyInjection;
using Xunit.Abstractions;
using Xunit.Sdk;// 配置启动类类型,第一个参数是 TestProgram 类完整限定名,第二个参数是当前项目程序集名称
[assembly: TestFramework("TestProject1.TestProgram", "TestProject1")]namespace TestProject1;/// <summary>
/// 单元测试启动类
/// </summary>
public class TestProgram : TestStartup
{public TestProgram(IMessageSink messageSink) : base(messageSink){// 初始化 FurionServe.RunNative(services =>{// 注册远程服务services.AddRemoteRequest();         });}
}

测试Service

using Admin.NET.Application.Service;
using Admin.NET.Core;
using Admin.NET.Core.Aio;
using Furion.RemoteRequest.Extensions;
using Xunit.Abstractions;namespace TestProject1;public class UnitTest1
{/// <summary>/// 输出日志/// </summary>private readonly ITestOutputHelper Output;private readonly XxxxxService _xxxxxService;//需测试的服务//基于Furion框架实现构造函数注入public UnitTest1(ITestOutputHelper tempOutput, SqlSugarRepository<Entity1> rep, SqlSugarRepository<Entity2> req2){Output = tempOutput;//构造服务实例_xxxxxService= new XxxxxService (rep, req2);}[Fact]public async Task Test1(){var obj = await _xxxxxService.Get(new Admin.NET.Core.BaseIdInput() { Id = 0 });Assert.Equal(2, 1 + 1);}[Fact]public async Task 测试请求百度(){var rep = await "https://www.baidu.com".GetAsync();Assert.True(rep.IsSuccessStatusCode);}
}

可以愉快的进行单元测试了
用单元测试Debug代码省时省力

问题

单元测试的时候没有token, 有的时候就会拿不到当前用户的id, 不知道怎么解决


http://www.mrgr.cn/news/15454.html

相关文章:

  • 数字文创产业:用科技讲述文化故事的新方式
  • Kafka3.x 使用 KRaft 模式部署 不依赖 ZooKeeper
  • 笔记整理—什么是uboot内核
  • 三耐环保家族控股99.17%:分红6000多万再补流,董事长董秘一年3次被警示
  • Thread.join()
  • 《机器学习》 贝叶斯分类器 原理、参数讲解及代码演示
  • CANoe入门(三) :CANoe全仿真阶段,模拟数据和信号
  • assert()在solidity的运用,模糊测试案例
  • Chainlit接入FastGpt接口完美对接,实现全新的用户聊天界面
  • Spring框架中PathMatchingResourcePatternResolver解析资源路径并匹配资源模式
  • SQL 对版本进行排序遇到的问题
  • 构建高可用性Nginx:配置策略与最佳实践
  • java中的Opencv:Opencv简介与开发环境部署
  • pnpm国内源设置
  • Nginx负载均衡中的连接超时处理:策略与配置
  • Java中的分布式一致性与共识算法
  • 【Git】在 Windows 和 Linux 上配置 SSH 密钥并初始化 Git 项目
  • 脚手架工具的应用(前端和后端搭建)
  • nginx 负载均衡详解与实现方法案例
  • SQL 语句及其分类