PostSharp и Visual Studio Покрытие кода - PullRequest
19 голосов
/ 21 февраля 2011

Я недавно начал использовать PostSharp в некоторых своих проектах и ​​заметил неприятный побочный эффект - покрытие кода во всех проектах, которые он использует, значительно падает.

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

Кто-нибудь имел опыт работы с такими вещами?

Ответы [ 3 ]

1 голос
/ 21 февраля 2011

Какой инструмент покрытия кода вы используете?В PartCover вы можете игнорировать некоторые классы или пространства имен, такие как MyProgram.PostSharp. *, Для получения правильных чисел.

0 голосов
/ 14 марта 2012

Я нашел решение этой проблемы:

Если я не добавлю атрибут аспекта в режиме отладки, покрытие кода рассчитывается правильно (если я запускаю тесты в режиме отладки):

#If Not DEBUG Then
<Assembly: De.Trumpkin.LogWrapper.TraceLogAspect()>
#End If
0 голосов
/ 11 апреля 2011

Я знаком с AOP, но не особенно с PostSharp.

Но ...

Если атрибуты исключения не решают проблему, единственная альтернатива, которую я вижу, - это создание версиисборка без вставленного кода.Как вы получите это, зависит от того, как работает PostSharp.Если это делается после обычной компиляции, вы можете создать дополнительную цель сборки, которая собирает вашу сборку без PostSharp.Затем вы можете использовать это в своих модульных тестах.Обратите внимание, что ваш модульный тест больше не может проверять функциональность, добавленную PostSharp.

...