Инструменты покрытия кода .NET не работают на собственных приложениях, которые загружают сборки .net - PullRequest
3 голосов
/ 11 мая 2011

Я пишу подключаемый модуль для Revit Architecture, который предоставляет .NET API. По сути, вы создаете сборку с классами, которые реализуют определенный интерфейс. Затем Revit загружает сборку и выполняет вызовы интерфейса.

Я хотел бы иметь возможность получать текущие показатели покрытия кода для моего подключаемого кода, но обнаружил, что все типичные инструменты покрытия кода (NCover, PartCover, dotCover) в этом случае не работают, поскольку хост Приложение Revit (Revit.exe) является родным приложением Windows, а не управляемым приложением. В документации NCover конкретно указано, что NCover не будет работать, если охватываемый процесс является собственным процессом приложения. Я предполагаю, что методы инструментария, используемые другими инструментами, похожи и поэтому имеют ту же самую основную причину неработоспособности.

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

Ответы [ 2 ]

0 голосов
/ 21 июня 2011

NCover, PartCover и dotCover являются инструментами покрытия .NET и делают это с помощью инструмента IL (я знаю, что PartCover и NCover делают это с помощью интерфейсов ICorProfilerCallback и событий JITCompilationStarted и т. знать, как обрабатывать нативный код (даже если они написаны на нативном коде).

Не могу признаться, что знаю, как работает dotCover.

Если вы хотите получить покрытие для собственной заявки, я бы посмотрел на такие инструменты, как Coverage Validator

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

Наш C # Test Coverage Tool должен работать для этого.

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

...