Подтвердить что ты не робот

Покрытие PostSharp и Visual Studio

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Я знаком с AOP, но не специально с PostSharp.

Но...

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

Ответ 3

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

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

#If Not DEBUG Then
<Assembly: De.Trumpkin.LogWrapper.TraceLogAspect()>
#End If