如何将类装饰为代码覆盖率不可测试?

问题描述 投票:0回答:5

背景:Visual Studio 2008、C#、.Net 3.5。

我有许多实用程序类根本无法进行单元测试。这主要是因为它们与资源(例如数据库、文件等)交互。

有没有办法可以装饰这些类,以便 Visual Studio 代码覆盖率引擎忽略它们,从而不会降低代码覆盖率百分比?

c# visual-studio-2008 unit-testing code-coverage
5个回答
31
投票

将项目升级到 .NET 4 时,您将获得 ExcludeFromCodeCoverageAttribute 类


21
投票

本文中有关于如何使用 [System.Diagnostics.DebuggerHidden][System.Diagnostics.DebuggerNonUserCode] 属性从代码覆盖率中排除方法的答案。

根据大卫的评论更新:

从 .NET 4.0 开始,有一个专用属性:[ExcludeFromCodeCoverage]


0
投票

您想要编写单元测试的原因之一是使代码松散耦合。如果您有兴趣学习如何编写松散耦合的代码(如果您不知道如何编写),您可以阅读这篇文章

说你可以尝试使用像TypeMock这样的工具,即使你不使用依赖注入原理编写对象,它也可以帮助你模拟你的对象。

TypeMock 是我使用的第一个 Mock 框架。我切换到 Rhino Mocks 因为使用 TypeMock 我不需要足够的纪律来编写松散耦合的代码。


0
投票

我想您的测试项目中有多个类,因此要考虑的一种选择是直接从覆盖范围中排除测试项目。您可以通过在 ClassTests.csproj 中添加此代码来实现这一点:

<ItemGroup>
        <AssemblyAttribute Include="System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute" />
</ItemGroup>

0
投票
[ExcludeFromCodeCoverage]  <-- This
public class NotTestable
{
}
© www.soinside.com 2019 - 2024. All rights reserved.