有没有办法将自动生成的类标记为 ExcludeFromCodeCoverage。我在其他领域使用该属性并且效果很好。但是,如果您打开自动生成的人的代码并将类标记为 ExcludeFromCodeCoverage,一旦您重新生成该类,它将被覆盖。
我可以在 dbml 后面的代码中创建部分类并将该属性应用到它并且它可以工作,但是,这会产生很多部分类。
有没有办法将自动生成的类标记为 ExcludeFromCodeCoverage。我在其他领域使用该属性并且效果很好。但是,如果您打开自动生成的人的代码并将类标记为 ExcludeFromCodeCoverage,一旦您重新生成该类,它将被覆盖。
我可以在 dbml 后面的代码中创建部分类并将该属性应用到它并且它可以工作,但是,这会产生很多部分类。
您可以使用PostSharp或其他 AOP 框架来创建适用ExcludeFromCodeCoverageAttribute
于指定类型或命名空间的方面:
[Serializable]
[AttributeUsage(AttributeTargets.Assembly)]
[MulticastAttributeUsage(MulticastTargets.Class | MulticastTargets.Struct)]
[ProvideAspectRole(StandardRoles.PerformanceInstrumentation)]
public sealed class DisableCoverageAttribute : TypeLevelAspect, IAspectProvider
{
public IEnumerable<AspectInstance> ProvideAspects(object targetElement)
{
Type disabledType = (Type)targetElement;
var introducedExclusion = new CustomAttributeIntroductionAspect(
new ObjectConstruction(typeof (ExcludeFromCodeCoverageAttribute)));
return new[] {new AspectInstance(disabledType, introducedExclusion)};
}
}
然后只需将此方面应用于程序集并提供您要排除的命名空间。在编译期间 PostSharp 将添加ExcludeFromCodeCoverageAttribute
到My.AutogeneratedCode
命名空间中的所有类:
[assembly: DisableCoverage(AttributeTargetTypes="My.AutogeneratedCode.*")]
您可以在此处找到示例代码和说明。