OpenCover генерирует пустой отчет - PullRequest
8 голосов
/ 01 июля 2011

Я использую OpenCover для определения покрытия кода для простого проекта C #.

Проблема

Хотя я вижу, что MSTest выполняет модульные тесты (и успешно), сгенерированный отчет пуст.

Подробнее

Это команда, которую я использую:

opencover.console.exe -register -arch:32 
                      -target:"%VSINSTALLDIR%\Common7\IDE\mstest.exe"
                      -targetargs:"/testcontainer:calculatortest.dll"
                      -filter:+[calculator.dll]* -output:coverage.xml

Выход

Microsoft (R) Test Execution Command Line Tool Version 10.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.

Loading calculatortest.dll...
Starting execution...

Results               Top Level Tests
-------               ---------------
Passed                CalculatorTest.StatisticsTest.AddOccurrenceTest
Passed                CalculatorTest.StatisticsTest.AvgTest
2/2 test(s) Passed

Summary
-------
Test Run Completed.
  Passed  2
  ---------
  Total   2
Results file:  e:\Users\erno\Documents\Visual Studio 2010\Projects\CodeStatistics\CalculatorTest\bin\Debug\TestResults\erno_ERNO01 2011-07-01 14_27_06.trx
Test Settings: Default Test Settings
Visited Classes 0 of 0 (NaN)
Visited Methods 0 of 0 (NaN)
Visited Points 0 of 0 (NaN)

Содержание сформированного отчета:

<?xml version="1.0" encoding="utf-8"?>
<CoverageSession xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <VisitPoints />
</CoverageSession>

Окружающая среда

Код работает в 64-разрядной версии Windows 7, но выполняется в 32-разрядной среде командной строки Visual Studio.

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

Что я пробовал

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

РЕДАКТИРОВАТЬ Я также тестировал с более широким фильтром -filter:+[*]*, но это никак не изменило вывод.

РЕДАКТИРОВАТЬ Я также протестировал с аргументом MSTest /noisolation , как упомянуто здесь . По-прежнему нет результатов.

РЕДАКТИРОВАТЬ Я также протестировал, полностью удалив фильтр и вернувшись к фильтру по умолчанию. Нет результатов.

Ответы [ 3 ]

7 голосов
/ 02 июля 2011

Вы должны иметь возможность использовать ключ -register: user для регистрации каждого пользователя, т. Е. Он регистрирует (и отменяет регистрацию) без необходимости получения полных прав администратора.

0 голосов
/ 18 апреля 2012

У меня была похожая проблема при использовании NUnit 2.6 в Windows XP.Каждый отчет был пустым, пока я не добавил магический регистр: флаг пользователя.@ Шон-Уайльд, что конкретно делает этот флаг?

0 голосов
/ 01 июля 2011

После перерыва мой разум прояснился, и я заподозрил, что регистрация COM, которая выполняется OpenCover, поэтому я проверил журнал событий.

Действительно, регистрация COM не удалась. Поэтому я решил попробовать запустить командную строку как администратор, подозревая, что мне мешает UAC

При запуске команды, включающей флаг /noisolation, процесс зависает.

Без этого флага отчет генерируется и корректно заполняется.

Я думаю, что я буду постоянно регистрировать COM dll, чтобы я мог запустить OpenCover, используя любые учетные данные, которые я предпочитаю.

Еще одна вещь, которую я мог бы сделать, - добавить проблему на сайт OpenCover, заявляющую, что он проглатывает исключение. (Если только Шон Уайлд не прочитает это и не победит меня)

...