Выход OpenCover с MSTest анализирует одну и ту же сборку дважды - PullRequest
3 голосов
/ 16 декабря 2011

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

Моя команда 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 модуля с одинаковым хешем.Интересно, что первый модуль имеет полное имя, указывающее на сборку в моей папке «\ bin \ Debug \ MyAssembly.dll», тогда как второй указывает на выходную сборку в «C: \ temp \ TestResults ... \ Out \ MyAssembly»..dll ".

Есть идеи?

Мэтт

1 Ответ

8 голосов
/ 18 декабря 2011

Вам необходимо использовать ключ -mergebyhash, это описано в WIKI / USAGE

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

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

...