Asp.net-Core

如何在 .net6 中使用 WebApplicationFactory(沒有可說的入口點)

  • November 1, 2021

在 ASP.NET Core 6 中,預設模板將所有內容從Sturtup.cs移入Program.cs,並使用 Program.cs 中的頂級語句,因此不再有(可說的)Program類 ether。

這看起來很棒,但現在,我需要測試所有這些。WebApplicationFactory<T>仍然希望我通過入口點類,但我不能這樣做(因為它的名字現在無法形容)。

在 ASP.NET Core 6 中如何配置集成測試?

該問題已在 ASP.NET Core RC1 上解決,但截至目前(2021 年 9 月 20 日),文件不完整。

編譯器會在後台生成一個Program可以與WebApplicationFactory<>. 該課程不是公開的,因此InternalsVisibleTo應該使用項目設置。

Damien Edwards 的 Minimal API 範例使用最新的 nightly bits。測試網路應用程序類聲明為:

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許可證的版本,這意味著它在生產中得到支持。

引用自:https://stackoverflow.com/questions/69058176