Как оформить класс как непроверяемый для покрытия кода? - PullRequest
20 голосов
/ 21 октября 2009

Справочная информация: Visual Studio 2008, C #, .Net 3.5.

У меня есть ряд служебных классов, которые просто не поддаются юнит-тестированию. Это происходит главным образом потому, что они взаимодействуют с ресурсами (например, базами данных, файлами и т. Д.).

Есть ли способ, которым я могу украсить эти классы, чтобы механизм покрытия кода Visual Studio игнорировал их, не снижая при этом процент покрытия кода?

Ответы [ 3 ]

27 голосов
/ 06 июня 2010

При обновлении проекта до .NET 4 вы получите класс ExcludeFromCodeCoverageAttribute .

17 голосов
/ 21 октября 2009

В этой статье есть ответ о том, как использовать [System.Diagnostics.DebuggerHidden] или [System.Diagnostics.DebuggerNonUserCode] Атрибуты для исключения методы из покрытия кода.

Обновление согласно комментарию Дэвида:

Начиная с .NET 4.0 для этого есть специальный атрибут: [ExcludeFromCodeCoverage]

1 голос
/ 21 октября 2009

Одна из причин, по которой вы хотите написать модульные тесты, - сделать ваш код слабо связанным. Вы можете прочитать эту статью , если вам интересно узнать, как писать слабосвязанный код (если вы не знаете, как).

Говоря, что вы можете попробовать использовать такие инструменты, как TypeMock , которые могут помочь вам высмеивать ваши объекты, даже если вы не пишете их, используя Принцип внедрения зависимости .

TypeMock был первым Mock Framework, который я использовал. Я переключаюсь на Rhino Mocks , потому что с TypeMock мне не нужно было быть достаточно дисциплинированным, чтобы писать слабосвязанный код.

...