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();         });}
}

测试服务

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);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/6129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习第04天-方法

文章目录 方法方法的定义、调用方法使用的常见问题方法案例方法调用的内存图方法的参数传递机制基本类型参数引用类型参数案例 方法重载单独使用return关键字 方法 方法是一种语法结构&#xff0c;它可以把一段代码封装成一个功能&#xff0c;以方便重复调用 好处 提高了代码的…

查看mysql数据库大小、表大小和最后修改时间

1.查看数据库表基本信息。 select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA ‘数据库名’ and information_schema.TABLES.TABLE_NAME ‘表名’; 2.查看MySQL数据库大小 SELECT sum(DATA_LENGTH)sum(INDEX_LENGTH) FROM informati…

JAVA面试之MQ

如何保证消息的可靠传输&#xff1f;如果消息丢了怎么办 数据的丢失问题&#xff0c;可能出现在生产者、MQ、消费者中。 &#xff08;1&#xff09;生产者发送消息时丢失&#xff1a; ①生产者发送消息时连接MQ失败 ②生产者发送消息到达MQ后未找到Exchange(交换机) ③生产者发…

pcb沉金工艺有什么作用:为何它成为电子制造的必备工艺?

在电子制造业中&#xff0c;PCB&#xff08;印刷电路板&#xff09;的质量和性能对于产品的整体表现至关重要。沉金工艺因其能够显著提升pcb的焊接性能、耐腐蚀性和导电性能&#xff0c;已成为电子制造不可或缺的一部分。 一、沉金工艺的作用 1.焊接性能的提升&#xff1a;工…

第一次用ssh登录树莓派or linux服务器出现Permission denied (publickey)

authenticity of host ) cant be established ssh userip Permission denied (publickey) 解决办法&#xff1a; 第一步&#xff1a; PasswordAuthentication yes 第二步&#xff1a; service sshd restart 这两步一步都不能少 注意&#xff01;

游资宁波桑田路悟道心法

“书藏古今&#xff0c;港通天下”–说的是甬城。 孙中山先生说&#xff0c;“凡吾国各埠&#xff0c;莫不有币人事业&#xff0c;即欧洲各国&#xff0c;亦多雨商足迹”&#xff0c;“甬人开风气之先&#xff0c;为各省之模范”–说的是甬人。 “炒股不跟解放南&#xff0c;…

如何搭建本地的 NPM 私有仓库 Nexus

NPM 本地私有仓库&#xff0c;是在本地搭建NPM私有仓库&#xff0c;对公司级别的组件库进行管理。在日常开发中&#xff0c;经常会遇到抽象公共组件的场景&#xff0c;在项目内部进行公用。新的项目开始时&#xff0c;也会拷贝一份创建一个新的项目&#xff0c;这样做不易于管理…

k8s部署maven项目

failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题&#xff0c;看了一圈首次搭建k8s的都是高频出现的问题。 couldn’t get current server API group list: Get “https://kubernetes.docker…

虚拟机网络桥接模式无法通信,获取到的ip为169.254.X.X

原因&#xff1a;VMware自动选择的网卡可能不对 解决&#xff1a;编辑-虚拟网络编辑器-更改桥接模式-选择宿主机物理网卡&#xff0c;断开虚拟机网络连接后重新连接即可

能源监控新方案:IEC104转MQTT网关在新能源发电中的应用

需求背景 近些年&#xff0c;我国新能源产业快速发展&#xff0c;光伏、风电等新能源项目高速增长&#xff0c;新能源发电已经成为国家能源结构的重要组成部分。 打造数字化、智能化、信息化的电力物联网系统&#xff0c;实现光伏风电等新能源发电站的远程监控、远程维护是新能…

每日一题-贪心算法

目录 前言 买入股票的最佳时机(1) 买入股票的最好时机(2) 前言 当你踏上贪心算法的旅程&#xff0c;仿佛置身于一场智慧的盛宴&#xff0c;每一步都是对问题解决方案的审慎选择&#xff0c;每一次决策都是对最优解的向往。贪心算法以其简洁高效的特性&#xff0c;被广泛运用于…

【golang学习之旅】Go的 switch 分支语句

系列文章 【golang学习之旅】报错&#xff1a;a declared but not used 【golang学习之旅】Go 的基本数据类型 【golang学习之旅】Go 的循环结构 【golang学习之旅】Go里面 if 条件判断语句 目录 系列文章switch 分支fallthrough 关键字无条件 switch switch 分支 有些时候需…

esp32-cam 1. 出厂固件编译与测试

0. 环境 - ubuntu18 - esp32-cam - usb转ttl ch340 硬件连接 esp32-camch340板子U0RTXDU0TRXDGNDGND5V5V 1. 安装依赖 sudo apt-get install vim sudo apt install git sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial p…

Qt 信号槽中信号重名解决办法

1、类似与Qt4中的写法&#xff1a; 2、函数指针 3、泛型 connect(ui->combox, QOverload<int>::of(&QCombox::currentIndexChanged), this ,&mainwindow::onindexchange);

LLM应用:让大模型prompt总结生成Mermaid流程图

生成内容、总结文章让大模型Mermaid流程图展示&#xff1a; mermaid 美人鱼, 是一个类似 markdown&#xff0c;用文本语法来描述文档图形(流程图、 时序图、甘特图)的工具&#xff0c;您可以在文档中嵌入一段 mermaid 文本来生成 SVG 形式的图形 Prompt 示例&#xff1a;用横向…

33.Docker安装

Docker由CE和EE两个版本&#xff0c;CE是社区版免费&#xff0c;EE企业版收费。 Docker CE支持64位版本centos7,内核版本不低于3.10&#xff0c;Centos7满足最低内核要求&#xff0c;所以在centos7安装docker。 前期准备工作 使用虚拟机上安装Centos7系统&#xff0c;再安装…

001_Langchain

LangChain LangChain 是一个开源框架,旨在帮助开发者使用大型语言模型(LLMs)和聊天模型构建端到端的应用程序。它提供了一套工具、组件和接口,以简化创建由这些模型支持的应用程序的过程。LangChain 的核心概念包括组件(Components)、链(Chains)、模型输入/输出(Mode…

赶紧收藏!2024 年最常见 100道 Java 基础面试题(二十五)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 100道 Java 基础面试题&#xff08;二十四&#xff09;-CSDN博客 四十九、什么是死锁&#xff1f; 死锁是计算机科学中一个重要的概念&#xff0c;尤其在并发编程和多线程环境中。在Java中&#xff0c;死锁同样是一…

《汇编语言》- 读书笔记 - 附注

《汇编语言》- 读书笔记 - 附注 附注1&#xff1a;Intel 系列微处理器的3种工作模式1. 实模式2. 保护模式保护模式 与 实模式 的主要区别寻址能力内存保护特权级别任务管理和虚拟内存 为何需要保护模式访问受保护资源 3. 虚拟 8086 模式4. 长模式&#xff08;Long Mode&#xf…

R语言学习—6—多元相关与回归分析

1、引子 xc(171,175,159,155,152,158,154,164,168,166,159,164) #身高 yc(57,64,41,38,35,44,41,51,57,49,47,46) #体重 par(marc(5,4,2,1)) #设定图距离画布边缘的距离&#xff1a;下5&#xff0c;左4&#xff0c;上2&#xff0c;右1 plot(x,y) 2、相关…