1

QA チームがコード化された UI テストを作成した Windows クライアントがあります。OpenCover を機能させようとしているので、彼らのテストが実際にどれだけのアプリに影響を与えているかを確認できます。彼らは、MSTest フレームワークの上にカスタム フレームワークを使用してテストを作成しました。

彼らのフレームワークは ApplicationUnderTest.Launch を使用してアプリケーションを別のユーザーとして起動し、セキュリティ設定をテストします。テスト dll のカバレッジをキャプチャできますが、アプリケーション自体はキャプチャできます。

アプリを強制的に 32 ビットでビルドし、すべての pdb がフォルダーに存在することを確認し、pdb ディレクトリも targetdir に含めました。

他の誰かがこの問題を見たことがありますか? また、バッチ ファイルをラッパー exe に置き換えてみましたが、それはカバーされましたが、メイン アプリケーションはカバーされませんでした。すべてが、マシンの管理者でもあるアプリケーションを起動しているユーザーとして実行されています。

私が実行しているコマンドは次のとおりです: C:\Users\kkindt.CORP\AppData\Local\Apps\OpenCover\OpenCover.Console.exe -register "-target:C:\Program Files (x86)\Microsoft Visual Studio 12.0\ Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" -output:C:\CodeCoverage\CollectionResults\CodedUICover.xml "-targetargs:C:\CodeCoverage\Tests\EllisWinAppTest.dll /Platform:x86 /Framework: Framework40 /Tests:LaunchEllisTest"

4

1 に答える 1

0

テスト中のアプリケーションの起動方法が原因であると強く疑っています

OpenCover は .NET プロファイラーであり、プロファイラーをアタッチして .NET アプリケーションを起動するには、新しいプロセスでいくつかの環境変数を使用できるようにする必要があります。現在のすべての環境変数が反映されていないと思われるApplicationUnderTest.Launchため、プロファイラーが起動せず、カバレッジが報告されません。

これを機能させるには、ProcessStartInfo を使用するApplicationUnderTest.Launchオーバーロードの使用を検討し、次の環境変数を伝播する必要があります。

  • Cor_Profiler
  • Cor_Enable_Profiling
  • OpenCover_Profiler_Key
  • OpenCover_Profiler_Namespace
  • OpenCover_Profiler_Threshold
  • OpenCover_Profiler_TraceByTest (利用可能な場合)

Cor_*ランタイムがプロファイラーを起動するために必要であり、OpenCover_*エントリはプロファイラーとホストがお互いを見つけられるようにするためのものです - これらの環境変数のリストgithub で入手できます

于 2014-12-06T00:28:59.787 に答える