16

かなり大規模なネイティブアプリで実行される独自の自動回帰テストシステムのコードカバレッジを測定したいと思います。これは、アプリに組み込まれているスクリプトを使用した、洗練されたスクリプトテストシステムです。何千ものテストがあり、MSTestユニットテストに置き換えられることはありません。

IDEとしてVS2012(Premium)を使用していますが、現在はVS2010コンパイラとライブラリでコンパイルされています。それがコードカバレッジを実行するための前提条件である場合、それはより早く変わる可能性があります。

このために個別のビルドを行うことができます-インストルメンテーションは問題ではありません。

組み込みのテストフレームワークを使用して単体テストを実行しているという仮定からすべてが始まっているように見えるMSドキュメントを読んで混乱しています。そもそもALMのネイティブサポートについて実際に話しているものを見つけるのに苦労していないときです!

ありがとう

4

2 に答える 2

26

Visual Studio 2012 のコード カバレッジ ツールは、テスト実行システムから完全に分離されています (完全な開示: 私が作成しましたが、Microsoft を離れた後にそれを継承したチームは、かなり有用な機能をいくつか削除しました)。VS 2012 でゼロから書き直され、ディスク上の実行可能ファイルを変更する代わりに、プロセスに読み込まれるときにネイティブ (x86 および x86-64) およびマネージド コード (.NET および Silverlight) を動的に計測するようになりました。

CodeCoverage.exe は "%ProgramFiles%\Microsoft Visual Studio 11.0\Team Tools\Dynamic Code Coverage Tools" にあります。

データを収集するには:

CodeCoverage.exe collect /output:foo.coverage foo.exe foos_args

構成ファイル (CodeCoverage.config という名前のディレクトリに既定のファイルがあります) を指定して、収集を制御できます。

カバレッジ データを分析するには、Visual Studio 2012 で foo.coverage を開くか、カバレッジ ツール自体を使用して分析を行います。

CodeCoverage.exe analyze /output:results.xml foo.coverage

注: 計測を行うには、モジュールの .pdb ファイルを検出する必要があります。2010 で構築しているため、2012 の DIA では機能しない可能性があるため、2012 のツールセットで再構築する必要がある場合があります。カバレッジ分析で期待するモジュールが表示されない場合は/include_skipped_modules、analyze コマンドに渡します。モジュールがスキップされた理由 (除外、デバッグ情報なしなど) を示す "reason" 属性があります。

編集: また、以前のバージョンの Visual Studio とは異なり、2012 のカバレッジ ファイル形式は完全に自己完結型です。モジュールと .pdbs は、分析時に存在する必要はありません。

于 2013-02-21T05:30:53.633 に答える
6

これは古い投稿だと思いますが、答えはまだ関連していると思います。

以前は C# で自由に使用できたすべてのものを、Visual C++ に移行したときに目にしたものはあまり好きではありませんでした。また、あなたと同じように、MSTests は部分的にしか機能しませんでした。私は自分のテストアプリケーションを持っていることにも慣れています。

基本的に私が欲しかったのは次のとおりです。

  • MS テストまたは EXE ファイルを実行する
  • Visual Studio でコード カバレッジを取得します。

いくつかの調査を行った後、VS Enterprise が現在この機能をテスト アダプターでサポートしていることに気付きました。

VSE を使用していない場合は、他にもいくつかのツールがあり、それぞれが独立した UI をユーザーに提供していることに気付きました。個人的にはそれは好きではありません。Visual Studio、できれば Visual Studio Community エディションでのカバレッジが必要です。

そこで、このアドインを自分で作成することにしました。VSE ほど洗練されていませんが、うまく機能します。

  • https://github.com/atlaste/CPPCoverageで VSIX コード カバレッジ ツールを作成しました。基本的に、Visual Studio で強調表示を管理し、クリック可能なレポートを生成し、ソリューション エクスプローラーに統合します。
  • カバレッジ測定自体には、以前はhttps://opencppcoverage.codeplex.com/を使用していました。基本的に、これにより、デバッグ可能な (ネイティブの) 実行可能ファイルに対してコード カバレッジ テストを実行できます。現在、私は独自のコード カバレッジ測定ツールを使用しています (上記もオープン ソースです)。
于 2016-06-08T15:48:37.430 に答える