dotCover 2019.3ヘルプ

コンソールランナーを使用してWebアプリケーションのカバレッジを分析する

Webアプリケーションのカバレッジを自動化する場合(継続的インテグレーションなど)、dotCoverコンソールランナーを使用できます。

スナップショットを取得するボタンをクリックしてカバレッジスナップショットを取得する手動カバレッジとは異なり、コンソールランナーは、プロファイリングされたプロセスがその作業を正しく終了した後にのみスナップショットを取得します。スナップショットを取得するには、システムでIISを正しく停止するか、コンソールランナーの2番目のインスタンスを実行して、「get snapshot and kill process」コマンドを最初に実行しているインスタンスに明示的に送信します。2番目のインスタンスは最初のインスタンスについてどのように知っていますか?最初のインスタンスを実行するときに、/Instance=<ID> 引数を使用してそのIDを指定します。次に、このIDを使用してコマンドをインスタンスに送信できます。

カバレッジプロセスは、正確なカバレッジシナリオ、およびIISまたはIIS Expressを使用してアプリケーションをホストするかどうかによって多少異なる方法で実行されます。主なシナリオは3つあります。

  1. Webアプリケーション(IIS Express / IIS)のカバレッジを取得します。

  2. テストと(オプションで)Webアプリケーションの適用範囲を取得します。アプリケーションとテストは別々に開始されます

  3. テストのカバレッジを得ます。アプリケーションはテストによって開始されます

Webアプリケーションを網羅する (IIS Express)

  1. dotCoverコンソールランナーを使用して、IIS Expressとアプリケーションをカバレッジで起動します。例:

    dotCover.exe cover /TargetExecutable="C:\Program Files (x86)\IIS Express\iisexpress.exe" /TargetArguments=/site:MyWebApp /systray:false /Output=coverageReport.xml /ReportType=XML /Instance=1
    ここで、Instance は現在のdotCover.exeインスタンスのIDです。このIDを使用して、このコンソールランナーにコマンドを送信します。
    /systray:false 引数は、複数のIIS Expressインスタンスを並行して起動する場合に意味があります。

  2. このアプリケーションでは、目的のシナリオを実行するか、またはこれを実行するテストを実行します。

  3. 実行中の最初のインスタンスに「get snapshot and kill process」コマンドを送信する、2番目のコンソールランナーインスタンスを実行します。

    dotCover.exe send /Command=GetSnapshotAndKillChildren /Instance=1
    ここで Instance は、手順1で指定した最初のdotCover.exeインスタンスのIDです。

  4. コマンドを送信すると、IIS ExpressおよびdotCover.exeインスタンスが停止し、カバレッジスナップショットが保存されます。

Webアプリケーションを網羅する (IIS)

  1. サーバーの管理者権限を持っていることを確認してください。

  2. dotCoverコンソールランナーを使用して、IISサービスのカバレッジを開始します。例:

    dotCover.exe cover-iis /Output=coverageReport.xml /ReportType=XML /Instance=1
    ここで、Instance は現在のdotCover.exeインスタンスのIDです。このIDを使用して、このコンソールランナーにコマンドを送信します。

  3. このアプリケーションでは、目的のシナリオを実行するか、またはこれを実行するテストを実行します。

  4. 実行中の最初のインスタンスに「get snapshot and kill process」コマンドを送信する、2番目のコンソールランナーインスタンスを実行します。

    dotCover.exe send /Command=GetSnapshotAndKillChildren /Instance=1
    ここで、Instance は、手順2で指定した最初のdotCover.exeインスタンスのIDです。

  5. コマンドを送信すると、IISサービスとdotCover.exeインスタンスが停止し、カバレッジスナップショットが保存されます。

アプリケーションとテストが別々に実行されている場合、テストの対象範囲を取得する

  1. サーバーの管理者権限を持っていることを確認してください。

  2. アプリケーションがIIS ExpressまたはIISアプリケーションプールのインスタンスでまだ実行されていないことを確認してください。

  3. アプリケーションを実行します(アプリケーションのカバレッジを取得する場合は、この手順を省略してください)。

  4. dotCoverコンソールランナーを使用して、後続の.NETプロセスのカバレッジを開始します。例:

    dotCover.exe cover-everything /Output=coverageReport.xml /ReportType=XML /Instance=1
    ここで、Instance は現在のdotCover.exeインスタンスのIDです。このIDを使用して、このコンソールランナーにコマンドを送信します。
    cover-everything モードでは、コンソールランナーはそれ以降に実行されるすべての管理対象プロセスに関するカバレッジデータを取得します。

  5. [手順3をスキップした場合のみ]アプリケーションを実行します。

  6. テストの実行。

  7. 実行中の最初のインスタンスに「get snapshot and kill process」コマンドを送信する、2番目のコンソールランナーインスタンスを実行します。

    dotCover.exe send /Command=GetSnapshotAndKillChildren /Instance=1
    ここで、Instance は、手順4で指定した最初のdotCover.exeインスタンスのIDです。

  8. コマンドを送信すると、IIS ExpressおよびdotCover.exeインスタンスが停止し、カバレッジスナップショットが保存されます。アプリケーションがステップ3ではなくステップ5で実行された場合、コンソールランナーは2つのスナップショット(アプリケーション用とテスト用)を取得し、1つにマージします。

アプリケーションがテストによって実行されている場合、テストの対象範囲を取得する

  1. dotCoverコンソールランナーを使用して、カバレッジでテストを開始します。例:NUnitを使用する場合:

    dotcover.exe cover /TargetExecutable="C:\Program Files\NUnit 2.6\bin\nunit-console.exe" /TargetArguments=C:\MyWebApp\bin\Debug\AppTests.dll /Output=coverageReport.xml /ReportType=XML /Instance=1
    ここで、Instance は現在のdotCover.exeインスタンスのIDです。このIDを使用して、このコンソールランナーにコマンドを送信します。

  2. テストアセンブリのセットアップでは、IIS Express / IISアプリケーションプールでアプリケーションを起動する必要があります。

  3. テストアセンブリのティアダウンでは、次のコマンドを実行する必要があります。

    dotCover.exe send /Command=GetSnapshotAndKillChildren /Instance=1
    ここで Instance は、手順1で指定した最初のdotCover.exeインスタンスのIDです。

  4. コマンドが送信されると、IIS Express / IISアプリケーションプール、dotCover.exeインスタンス、およびテストを実行するプロセスが停止され、カバレッジスナップショットが保存されます。

最終更新日: 2020年2月6日