在项目中添加XUnit测试项目(api:需要测试的程序集,api.test:单元测试)
1. 在api.test程序集中添加NuGet测试包引用: Microsoft.AspNetCore.Mvc.Testing
2. 在api.test程序集中添加api程序集项目引用
3.在api.test程序集中添加初始化程序集入口类(不需要在测试程序集中配置appsettings和program.cs)
[ExcludeFromCodeCoverage]
internal sealed class ApiTestApp : WebApplicationFactory<Program>
{
//Program为要调用程序集的入口函数
}
4.Program”不可访问,因为它具有一定的保护级别, 解决方案
//需要在api程序集中.csproj添加中测试引用
<ItemGroup>
<InternalsVisibleTo Include="Api.Test" />
</ItemGroup>
5.使用方法
public class OrderTest
{
private readonly IOrderService _orderService;
public RLOrderMergeEventConsumerTest()
{
var apiTest = new ApiTestApp();
//注入要调用的类
_orderService= apiTest.Services.GetRequiredService<IOrderService>();
}
/// <summary>
/// 添加订单
/// </summary>
/// <returns></returns>
[Fact]
public async Task AddOrderTest()
{
await _orderService.Add(12);
}
}