1

「ここに出力があります...」

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

(私はプロファイルを登録するためにzippy32を試しましたが、XPを使用しています)
実際、私はNunit、mstest、opencoverageの初心者であり、 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**)  
{  
}  
4

2 に答える 2

1

テストは失敗していません。エラーが発生しています。つまり、テストプロジェクトのコンパイルに問題があるようです。テストを構築して実行できない場合、カバレッジが得られないのは当然のことです。

于 2012-03-07T21:04:53.630 に答える
1

これには2つの理由が考えられますが、フィルターの使用法で説​​明されているように、フィルターが間違っていると思われます

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

除外フィルターは包含フィルターよりも優先されます

したがって、 (およびおそらく)が有効-[Bank.*]*になる前にタイプを除外しています。デフォルトのフィルターは、デフォルトのフィルター以外に追加のフィルターがない場合にのみ追加されるため、プロファイリングするモジュールのフィルターのみを追加する必要があります。+[Bank.Accounts*]*+[Bank*]*+[*]*+[Bank.*]*

XML 出力を開くと、クラスが除外されている場合、skipedDueTo 属性を介して理由が提供されます。

もう 1 つの理由は、アセンブリのフォルダーにない PDB ファイルが見つからないことが原因である可能性があります (一部のテスト ハーネスは、アセンブリを他のフォルダーにコピーしますが、/noisolation スイッチを使用していることがわかります。これはそうすべきではありません)。

お気軽に議論してください。または、 OpenCover GitHub サイトで問題が大きく提起されていると思われる場合は、

于 2012-03-07T22:30:05.387 に答える