Как исключить типы и методы, которые покрываются dotCover в TeamCity? - PullRequest
55 голосов
/ 12 апреля 2011

У меня есть существующий проект C # 4, для которого я проверил покрытие тестов с помощью TestDriven.Net и функции покрытия Visual Studio, т. Е. Test With -> Coverage из контекстного меню.

Проект содержит некоторый код, который я не хочу покрывать, и я решил это, добавив [ExcludeFromCodeCoverage] для этих типов и методов.

Мы только что обновили TeamCity до 6.0.3 и добавили покрытие dotCover к этапу сборки NUnit.

Мне удалось удалить покрытие для внешних сборок, таких как NHibernate, в разделе «Фильтры» (явно указав сборки, для которых я хочу покрытие), но я пытаюсь решить, как исключить типы и методы из покрытых сборок. .

enter image description here

Ответы [ 3 ]

62 голосов
/ 02 июня 2011

Хорошо, Мартин, я понял это!Это заняло всего один час случайного поиска в синтаксисе фильтра ... когда в документации говорится, что нужно добавить фильтр, подобный этому

+:myassembly=*;type=*;method=***

Они действительно имеют в виду это ... где все в <> заменяется полностьюВы и все остальное - буквальное значение

+:<myassembly>;type=<filter>;method=<filter>

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

+:Omnyx.Scanner
-:Omnyx.Scanner;type=Omnyx.Scanner.Simulation.*
-:Omnyx.Scanner;type=Omnyx.Scanner.ToolsCommon.*
2 голосов
/ 03 мая 2011

Взгляните на страницу Советы и рекомендации по dotCover . Похоже, вы можете настроить исключения в разделе «Фильтры», подобно тому, как вы исключили целые сборки.

Допустим, вы хотите игнорировать метод с именем DoStuff, содержащийся в классе MyStuff, который находится в библиотеке MyAwesomeAssembly. Тогда ваш dotCover XML должен выглядеть примерно так:

<Filters>
  <ExcludeFilters>
     <FilterEntry>
       <ModuleMask>MyAwesomeAssembly</ModuleMask>
       <ClassMask>MyStuff</ClassMask>
       <FunctionMask>DoStuff</FunctionMask>
     </FilterEntry>
  </ExcludeFilters>
</Filters>

Отказ от ответственности: Я не использую dotCover, поэтому я не уверен на 100%, сработает ли это на самом деле.

0 голосов
/ 06 мая 2011

Вот что говорит TeamCity об опциях фильтра:

Укажите сборки для одного профиля в строке, используя следующий синтаксис: +: myassembly = ; тип = ; метод = *

Использование -: MyAssembly исключить сборку из покрытия кода. Подстановочные знаки звездочки (*) поддерживаются здесь.

...