我最初在 asp.net 文档上发布了一个问题,并在此处引用。
由于删除了公共 Startup.cs,从 NET5 迁移到 NET6 破坏了使用 WebApplicationFactory 的大量测试。另一种选择是转向程序,该程序在新模板出现之前一直有效。在新模板中没有公共类程序,因此我们需要添加一个公共部分类 Program {}
我正在查看文档,他们提供了一个使用 InternalsVisibleTo 的新解决方案,恕我直言,它更好,因为它不会仅出于测试目的而更改代码。
然而,这会导致这样的代码
public class UnitTest1 : IClassFixture<WebApplicationFactory<Program>>
{
public UnitTest1(WebApplicationFactory<Program> applicationFactory)
{
}
}
Run Code Online (Sandbox Code Playgroud)
然而问题是程序是内部的,这会触发 CS0051:
UnitTest1.cs(8, 12):[CS0051] 可访问性不一致:参数类型“WebApplicationFactory”比方法“UnitTest1.UnitTest1(WebApplicationFactory)”更难访问
问题是 xunit 要求它的类/构造函数是公共的。
那么有人设法在没有公众部分的情况下让这项工作正常进行吗?