2012-03-07 3 views
1

'вот выход ...OpenCover показывая 0 линии покрыты MSTest

Loading C:\TEMP\BankDemo_mstest\Test_BankDemo\bin\Debug\Test_BankDemo.dll... 
Starting execution... 

Results    Top Level Tests 
-------    --------------- 
Error     Test.BankDemo.AccountTest.CreditTest 
Error     Test.BankDemo.AccountTest.DebitTest 
Error     Test.BankDemo.AccountTest.FreezeTest 
0/3 test(s) Passed, 3 Error 

Summary 
------- 
Test Run Error. 
    Error 3 
    -------- 
    Total 3 

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

OpenCover\OpenCover.Console.exe -register:user 
-output:"Codecoverage.xml" 
-mergebyhash 
-target:"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" 
targetargs:"/testcontainer: 
"C:\TEMP\BankDemo_mstest\Test_BankDemo\bin\Debug\Test_BankDemo.dll" 
/noisolation" 
-filter:"-[Bank.*]* +[Bank*]* +[Bank.Accounts*]* -[Test.BankDemo*]*" 

ReportGenerator\bin\ReportGenerator.exe Codecoverage.xml Coverage HTML 

(я даже пытался зарегистрировать regsvr32 профиль, и я использую XP)
Фактически я начинаю с Nunit, mstest и opencoverage, и я нашел образец Unit tes т случай на http://www.nunit.org/index.php?p=quickStart&r=2.4 так
** Nunit тестового класса, как показано ниже **

private TestContext testContextInstance; 
public TestContext TestContext 
{ 
    get { return testContextInstance; } 
    set { testContextInstance = value; } 
} 
private int store; 
[TestInitialize()] 
public void TestFixtureSetUp() 
{ 
    store = 1; 
} 

выше класс отлично работает с NUnit и Opencoverage также показывают точные данные, но и то же класс после замены MSTest конкретных атрибутов не работали так после публикации этого квеста я понял, что этот метод должен быть статическим и добавить аргумент TestContext. поэтому я сделал изменения кода (жирным шрифтом), так как команда ниже работала нормально.

MSTest класс

private TestContext testContextInstance; 
public TestContext TestContext 
{ 
    get { return testContextInstance; } 
    set { testContextInstance = value; } 
} 
[ClassInitialize()] 
public **static** void ClassInit(**TestContext context**) 
{ 
} 

ответ

1

Ваши тесты не неудачу - они erroring, то есть, как представляется, проблема компиляции тестового проекта. Разумеется, вы не получите никакого покрытия, если тесты не могут быть построены и выполнены.

1

-причины могут быть для этого, однако я подозреваю, что ваши фильтры так, как описаны в usage фильтрах

(+/-)[assembly/module filter]namespace.typefilter 

и исключение фильтры имеют приоритет над включением фильтрами

Так что ваш -[Bank.*]* является исключением типы до +[Bank.Accounts*]* (и, возможно, +[Bank*]*) могут вступить в силу. В фильтре по умолчанию +[*]* добавляется только если у вас нет никаких других дополнительных фильтров, кроме тех, по умолчанию, то вы должны только добавить фильтры для модулей, которые вы хотите профилировать т.е. +[Bank.*]*

Если вы откроете вывод XML то, если класс отфильтровывается, причина предоставляется через атрибут skippedDueTo.

Другая причина может быть из-за отсутствия файлов PDB, не находящихся в папке сборки (некоторые тестовые жгуты копируют сборки в другие папки, но я вижу, что вы используете переключатель/noisolation - так что это не должно быть)

Пожалуйста, не стесняйтесь обсуждать или если вы думаете, есть большой поднимать вопрос о OpenCover GitHub site

+0

спасибо за ответ, что это вопрос с MSTest класса – sureshp

+0

возможно, но даже если ваши тесты не работают , вы получите покрытие из-за настройки теста и срыва, и ваши фильтры по-прежнему выглядят неправильно :) –