本文介绍了如何在.net6中使用WebApplicationFactory(没有朗读的入口点)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在ASP.NET Core 6中,默认模板将所有内容从Sturtup.cs移到Program.cs中,并使用Program.cs中的顶级语句,因此不再有(朗读)Program类。

这看起来很棒,但是现在,我需要测试所有这些。WebApplicationFactory<T>仍然希望我传递入口点类,但我不能这样做(因为它的名称现在无法读出)。

预计如何在ASP.NET Core 6中配置集成测试?

推荐答案

该问题已在ASP.NET Core RC1上解决,但截至目前(2021年9月20日),文档不完整。

编译器在后台生成可与WebApplicationFactory<>一起使用的Program类。不过,该类不是公共的,因此应该使用InternalsVisibleTo项目设置。

Damien Edwards' Minimal API sample使用the latest nightly bits。测试Web应用程序类声明为:

internal class PlaygroundApplication : WebApplicationFactory<Program>
{
    private readonly string _environment;

    public PlaygroundApplication(string environment = "Development")
    {
        _environment = environment;
    }

    protected override IHost CreateHost(IHostBuilder builder)
    {
    ...

在应用项目文件中,InternalsVisibleTo用于使Program类对测试项目可见:

  <ItemGroup>
    <InternalsVisibleTo Include="MinimalApiPlayground.Tests" />
  </ItemGroup>

RC1功能齐全,根据之前的主要版本判断,它可能是第一个拥有Go Live许可证的版本,这意味着它在生产中受支持。

这篇关于如何在.net6中使用WebApplicationFactory(没有朗读的入口点)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-18 12:40