我通常将属性[ExcludeFromCodeCoverage]
设置为我的Program类,因为无论如何都不可能对该类进行单元测试(或者也没有意义),因此它不会显示为"缺失"。在覆盖报告中:
[ExcludeFromCodeCoverage]
public static class Program
{
public static void Main(string[] args)
{
// do something awesome
}
}
但是对于顶层语句,我不知道如何处理这个问题。似乎不可能设置属性,正如我在这里发现的:https://stackoverflow.com/a/69962982/1099519
到目前为止,我坚持使用经典的Class声明,但是当涉及到单元测试代码覆盖率时,他们可能会考虑其他事情?自c# 10以来,顶级语句的生成发生了变化,现在您可以将partial Program
类添加到顶级语句的末尾(或在单独的文件中),并为其添加属性:
[ExcludeFromCodeCoverage]
public partial class Program { }
请注意,在最初的特性规范中(针对c# 9)声明编译器使用的实际名称依赖于实现,但自c# 10和。NET 6以来,使用部分类是单元测试ASP的推荐方法之一。使用顶级语句的。NET Core应用程序。
但我个人会说,如果你需要这样的"先进的";在某些情况下,您应该切换回"普通旧的";Program
类。