2012-03-07 78 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,我發現樣本單元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特定屬性之後同一個類在發佈這個questin之後,我覺得這個方法必須是靜態的,並添加了TestContext參數。所以我按照下面的代碼更改了代碼(,代碼爲),上面的命令工作正常。

MSTest的類

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

回答

1

你的測試沒有失敗 - 他們示數,這意味着有似乎編譯測試項目中的一個問題。如果測試不能被構建和執行,那麼你會得不到保證。

1

2個原因可能是這個,但是我懷疑你的過濾器是錯誤的,因爲在usage描述的過濾器是

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

和排除過濾器優先於包含過濾器

所以你-[Bank.*]*被排除+[Bank.Accounts*]*(可能爲+[Bank*]*)之前的類型可以生效。作爲默認過濾器+[*]*僅添加如果你沒有其他額外的過濾器,比默認的對方,那麼你應該只需要添加過濾器,你要分析即+[Bank.*]*

模塊如果你打開XML輸出那麼如果一個類被過濾出來,則通過skippedDueTo屬性提供一個原因。

另一個原因可能是由於缺少PDB文件不在程序集的文件夾中(某些測試會將程序集複製到其他文件夾 - 但我看到您正在使用/ noisolation開關 - 所以這不應該是)

請隨時討論,或者如果你覺得有一個大的提升的OpenCover GitHub site

+0

感謝您的答覆是與 – sureshp 2012-03-09 18:52:02

+0

的MSTEST類或許是問題的問題,但即使你的測試不運行,由於測試設置和拆卸,您將獲得覆蓋範圍,並且您的過濾器仍然看起來不正確:) – 2012-03-09 21:45:37

相關問題