You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用WebApplicationFactory对.NET 6 Web Api项目进行集成测试?

.NET 6 无Startup类时WebApplicationFactory集成测试解决方案

方案1:适配最小API模型(推荐,无需改项目结构)

.NET 6默认的顶级语句Program.cs默认生成了隐式的Program类,只需将其暴露给测试项目,替换泛型参数即可:

  • 第一步:将Program类暴露给测试项目,二选一即可:
    1. 在Web API项目的.csproj文件中添加配置,将内部可见性开放给测试项目:
    <ItemGroup>
      <InternalsVisibleTo Include="你的测试项目程序集名称" />
    </ItemGroup>
    
    1. 直接在Web API项目的Program.cs文件末尾添加一行代码,将Program类声明为公共分部类:
    public partial class Program { }
    
  • 第二步:修改测试代码中的泛型参数,将Startup替换为Program即可:
    原有代码:
    private readonly WebApplicationFactory<Startup> factory = new WebApplicationFactory<Startup>();
    
    修改后:
    private readonly WebApplicationFactory<Program> factory = new WebApplicationFactory<Program>();
    

修改完成后所有原有WebApplicationFactory的用法(服务重写、配置覆盖、客户端创建等)完全和之前一致,无需额外调整。

方案2:保留原有Startup类结构(兼容旧代码零修改)

如果不想修改现有测试代码,可以在创建项目时指定参数生成带Startup类的项目:

dotnet new webapi --use-startup true

如果是已经创建好的.NET 6项目,也可以手动恢复.NET 5的项目结构:将Program.cs中服务注册、中间件配置的逻辑迁移到新建的Startup类中,再将Program.cs调整为.NET 5时代的写法即可,原有测试代码可以完全复用。

内容的提问来源于stack exchange,提问作者Daan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:48:04