10

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>

環境

コードは Windows 7 64 ビットで実行されていますが、32 ビットの Visual Studio コマンド プロンプト環境で実行されます。

EDIT単体テストのデバッグ ビルドを含むディレクトリでコマンドを実行しており、OpenCover ディレクトリを環境パスに追加しました。

私が試したこと

PartCover で同様の問題を検索しましたが (OpenCover は一種のブランチのように見えるため)、問題に一致するものを見つけることができず、解決策を示しました。

編集私はより広いフィルターでもテストしました-filter:+[*]*が、これは出力をまったく変更しませんでした。

編集ここで述べたように、MSTest/noisolation引数でもテストしました。まだ結果が出ていません。

編集フィルターを完全に削除し、デフォルトのフィルターに戻すこともテストしました。結果がありません。

4

3 に答える 3

7

-register:user スイッチを使用して、ユーザーごとの登録を行うことができるはずです。つまり、完全な管理者権限を必要とせずに登録 (および登録解除) できます。

于 2011-07-01T21:29:07.120 に答える
0

Windows XP で NUnit 2.6 を使用すると、同様の問題が発生しました。魔法の register:user フラグを追加するまで、すべてのレポートは空白でした。@ Shaun-Wilde、このフラグは正確には何をしますか?

于 2012-04-18T00:49:32.957 に答える
0

一休みして頭がすっきりしたので、OpenCover による COM 登録を疑ったので、イベントログを確認しました。

実際、COM 登録は失敗していました。そこで、UAC によって妨げられているのではないかと疑って、管理者としてコマンド プロンプトを実行してみることにしました。

フラグを含むコマンドを実行すると/noisolation、プロセスがハングします。

このフラグがないと、レポートが生成され、正しく入力されます。

COM dll を永続的に登録して、任意の資格情報を使用して OpenCover を実行できるようにします。

私ができるもう 1 つのことは、例外を飲み込んでいるという問題を OpenCover サイトに追加することです。(ショーン・ワイルドがこれを読んで私を打ち負かさない限り)

于 2011-07-01T16:22:02.667 に答える