Furion项目的单元测试

.Net项目中如果要对Controller或者服务进行测试一般要用mock创建需要注入的实例, 要配置好这些实例还挺复杂的

在Furion帮我们实现了单元测试的构造函数注入, 让单元测试变得简单, 具体步骤如下

在解决方面里面新增一个xunit的测试项目TestProject1, 测试项目一般单独放在test目录里面

NuGet安装Furion.Pure和Furion.Pure.Xunit ; 版本要和项目统一

把解决方案里面的项目全部引入

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

CSharp 复制代码
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)
    {
        // 初始化 Furion
        Serve.RunNative(services =>
        {
            // 注册远程服务
            services.AddRemoteRequest();         
        });
    }
}

测试服务

C# 复制代码
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);
    }
}
相关推荐
慧都小项1 天前
软件测试工具Parasoft C/C++test如何通过桩函数实现多次调用返回不同值
单元测试·parasoft·桩函数
JosieBook1 天前
【SpringBoot】32 核心功能 - 单元测试 - JUnit5 单元测试中的嵌套测试与参数化测试详解
spring boot·单元测试·log4j
奔跑吧邓邓子3 天前
【C语言实战(79)】深入C语言单元测试:基于CUnit框架的实战指南
c语言·单元测试·实战·cunit
安冬的码畜日常3 天前
【JUnit实战3_31】第十九章:基于 JUnit 5 + Hibernate + Spring 的数据库单元测试
spring·单元测试·jdbc·hibernate·orm·junit5
安冬的码畜日常4 天前
【JUnit实战3_29】第十八章:REST API 接口测试(上)——RESTful 风格的后端 API 的搭建
测试工具·单元测试·restful·rest api·junit 5
安冬的码畜日常4 天前
【JUnit实战3_30】第十八章:REST API 接口测试(下)—— REST API 接口的 MockMvc + JUnit 5 测试实战
测试工具·junit·单元测试·restful·rest api·junit5
慧都小项4 天前
Parasoft C/C++test如何使用桩函数替代MFC窗口类顺利执行单元测试
单元测试·parasoft·桩函数·mfc窗口类
慧都小项5 天前
Parasoft C/C++test中Trace32调试器的配置与单元测试执行
单元测试·parasoft·trace32调试器
JosieBook6 天前
【SpringBoot】31 核心功能 - 单元测试 - JUnit5 单元测试中的断言机制——验证你的代码是否按预期执行了
spring boot·单元测试·log4j
l1t6 天前
编译SQLite 3.51源码并体验新功能
单元测试·sqlite·duckdb