Dom*_*mon 12 c# code-coverage c#-9.0 toplevel-statement c#-10.0
我通常将该属性设置[ExcludeFromCodeCoverage]为我的 Program 类,因为无论如何都无法对该类进行单元测试(或者也没有意义),因此它不会在覆盖率报告中显示为“缺失”:
[ExcludeFromCodeCoverage]
public static class Program
{
public static void Main(string[] args)
{
// do something awesome
}
}
Run Code Online (Sandbox Code Playgroud)
但对于高层的声明,我不知道如何处理这个问题。正如我在这里发现的那样,似乎无法设置属性: https: //stackoverflow.com/a/69962982/1099519
到目前为止,我坚持经典的类声明,但也许他们在单元测试代码覆盖率方面考虑了其他事情?
Gur*_*ron 20
自 C# 10 以来,顶级语句生成已更改,现在您可以将partial Program类添加到顶级语句的末尾(或在单独的文件中)并向其添加属性:
[ExcludeFromCodeCoverage]
public partial class Program { }
Run Code Online (Sandbox Code Playgroud)
请注意,在初始功能规范(对于 C# 9)中,编译器使用的实际名称取决于实现,但由于使用分部类的 C# 10 和 NET 6 是单元测试ASP.NET Core 应用程序的推荐方法之一,该应用程序使用 top-级别的陈述。
但我个人想说,如果您需要这种“高级”场景,您应该切换回“普通旧”Program类。