2011-12-16 8 views
3

У меня был первый переход с использованием opencover для текущего проекта и только что он работал с моим проектом mstest. У меня проблема, хотя в том, что opencover output xml, похоже, пытается проанализировать одну и ту же сборку дважды. Также стоит отметить, что один из анализов показывает 0% охвата кода (что неверно), тогда как другое больше похоже на 85% (что правильно).OpenCover Output с MSTest анализирует одну и ту же сборку дважды

Моя команда opencover выглядит следующим образом:

"opencover.console.exe" -register:user -target:"C:\Program Files (x86)\Microsoft visual Studio 10.0\Common7\IDE\mstest.exe" -output:"C:\temp\coverage.xml" -targetargs:"/testcontainer:MyTestAssembly.dll" -filter:+[MyAssembly]MyNamespace.MyClassName 

Это относится к одной сборке, и один класс в этой сборке. Однако выход xml имеет 2 модуля сектонов с одинаковым хэшем. Интересно, что первый модуль имеет FullName, указывающий на сборку в моей папке «\ bin \ Debug \ MyAssembly.dll», а второй - на сборке вывода в «C: \ temp \ TestResults ... \ Out \ MyAssembly .dll».

Любые идеи?

Matt

ответ

8

Вы должны использовать -mergebyhash переключатель это документированный в WIKI/USAGE

Это происходит потому, что MSTest открывает сборку дважды в разных местах; один раз в исходном месте, а затем снова в тестовой папке.

Этот параметр заставляет opencover сравнивать сборки с помощью хэша файла и повторно использовать идентификаторы для точек последовательности для ранее загруженных сборок. Вам также может потребоваться использовать -targetdir, если он не может найти PDB, указать на папку с ними, но обычно он находит их без дополнительной помощи.