方法 : ASP.NET ソリューションでのテスト中にデバッグする

 

発行: 2016年7月

ASP.NET Web プロジェクトのテストに使用している単体テストと Web テストのどちらも、デバッグできます。 また、テストの実行中に ASP.NET の製品コードをデバッグできます。

ただし、ASP.NET コードをテストしている場合、テスト コードは、VSTestHost プロセスの制御下にある通常の方法では実行されません。 この場合、IIS プロセスで実行されるか、または Web サイトがファイル ベースの場合、ASP.NET 開発サーバー プロセスで実行されます。 一般的なテスト プロセスとは異なる方法でテストが実行されるため、テストの実行中は、[テスト] メニューの [単体テストのデバッグ] オプションを選択してもデバッグが実行されません。

同様に、デバッグが有効ではない場合、ASP.NET の製品コードはステップ インできません。また、デバッガーは ASP.NET 開発サーバーまたは IIS プロセスにアタッチされます。

次の各手順では、[新しい Web サイト] ダイアログ ボックスを使用して ASP.NET Web サイト プロジェクトを作成します。 このダイアログ ボックスでは、[場所] ボックスで、Web サイトの場所を選択します。 この選択により、後でデバッガーをアタッチするプロセスと、ASP.NET ソリューションでのテストの実行中にデバッグを行う手順が決まります。 選択できるのは、IIS と ASP.NET 開発サーバーです。

  • IIS で実行中の場合のデバッグ

  • ASP.NET 開発サーバーで実行中の場合のデバッグ

IIS で実行中の場合のデバッグ

次の手順では、デバッガーをプロセスにアタッチします。 プロセス名は、使用するオペレーティング システムによって異なります。これは、インストールされる IIS のバージョンがオペレーティング システムによって異なるからです。

IIS で ASP.NET テストを実行中にデバッグするには

  1. テスト対象の ASP.NET Web サービス プロジェクトと、それをテストする ASP.NET 単体テストを作成します。

    この Web サイト プロジェクトを作成する場合は、[新しい Web サイト] ダイアログ ボックスの [場所] で [HTTP] または [FTP] を選択します。 これにより、ホスト プロセスは IIS になります。

  2. ASP.NET Web プロジェクトでデバッグを有効にします。 これを行うには、プロジェクトの Web 構成ファイルを編集します。 プロジェクトに Web.config ファイルが既に存在する場合は、手順 4. に進みます。 存在しない場合は、ここでファイルを追加します。それには、ソリューションで Web サイト プロジェクトのショートカット メニューを開き、[新しい項目の追加] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [新しい項目の追加] ダイアログ ボックスの [Web 構成ファイル] をクリックし、[追加] をクリックします。

    Web.config ファイルが Web サイト プロジェクトに追加されます。 Web.config ファイルの使用方法の詳細については、「方法 : .NET アプリケーションのデバッグを有効にする」を参照してください。

  4. Web.config ファイルで、<compilation debug="false"/> という行を <compilation debug="true"/> に変更します。

  5. (省略可能) ASP.NET 単体テストと、Web サイトの製品コードにブレークポイントを設定します。

  6. デバッガーを IIS プロセスにアタッチします。 これを行うには、[デバッグ] をクリックし、[プロセスにアタッチ] をクリックします。

    [プロセスにアタッチ] ダイアログ ボックスが表示されます。

  7. [選択可能なプロセス] の下で、デバッガーをアタッチするプロセス名を探します。

    必要なプロセスが表示されないときは、その他の実行中のプロセスも表示できます。 これを行うには、[すべてのユーザーからのプロセスを表示する][すべてのセッションのプロセスを表示する] をオンにします。

  8. [選択可能なプロセス] の下にあるプロセス名を選択し、[アタッチ] をクリックします。

    アタッチする必要があるプロセスが実行されていないときは、[キャンセル] をクリックし、プロセスを起動します。 これを行うには、ソリューション エクスプローラーで、Web サイト プロジェクトのショートカット メニューを開き、[ブラウザーで表示] をクリックします。 次に [デバッグ] をクリックし、もう一度 [プロセスにアタッチ] をクリックすると、プロセスが起動し、[選択可能なプロセス] に表示されます。 プロセス名を選択し、[アタッチ] をクリックします。

  9. テストを開始します。

    これを行うには、単体テスト エクスプローラーでデバッグするテストを選択し、[テスト] のメニューで [単体テストのデバッグ][選択されたテスト] の順にクリックします。

    注意

    テストを実行する場合は、[選択範囲のデバッグ] ではなく、[選択範囲の実行] を選択します。相違点は、[選択範囲のデバッグ] を選択すると、デバッガーはテストが完了すると自動的にデタッチされる一方、[選択範囲の実行] を選択すると、デバッガーはアタッチされたままになることです。デバッグ中にテストを何度も実行する必要があり、そのたびにプロセスをアタッチし直すのを回避したい場合には、[選択範囲の実行] が便利です。[選択範囲の実行] を選択した場合、デバッグが完了してプロセスをデタッチするには、[デバッグ] メニューの [デバッグの停止] をクリックするか、Shift キーを押しながら F5 キーを押します。

ASP.NET 開発サーバーで実行中の場合のデバッグ

テストを ASP.NET 開発サーバーで実行中にデバッグするには

  1. テスト対象の ASP.NET Web サービス プロジェクトと、それをテストする ASP.NET 単体テストを作成します。

    この Web サイト プロジェクトを作成する場合は、[新しい Web サイト] ダイアログ ボックスの [場所] で [ファイル システム] を選択します。 これにより、ホスト プロセスは ASP.NET 開発サーバーになります。

  2. ASP.NET Web プロジェクトでデバッグを有効にします。 これを行うには、プロジェクトの Web 構成ファイルを編集します。 プロジェクトに Web.config ファイルが既に存在する場合は、手順 4. に進みます。 存在しない場合は、ここでファイルを追加します。それには、ソリューションで Web サイト プロジェクトのショートカット メニューを開き、[新しい項目の追加] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [新しい項目の追加] ダイアログ ボックスの [Web 構成ファイル] をクリックし、[追加] をクリックします。

    Web.config ファイルが Web サイト プロジェクトに追加されます。 Web.config ファイルの使用方法の詳細については、「方法 : .NET アプリケーションのデバッグを有効にする」を参照してください。

  4. Web.config ファイルで、<compilation debug="false"/> という行を <compilation debug="true"/> に変更します。

  5. System.Diagnostics.Debugger.Break() ステートメントを ASP.NET 単体テストの先頭に追加します。

    注意

    コードに設定したブレークポイントがヒットするのは、ブレークポイントがこの System.Diagnostics.Debugger.Break() ステートメントより後にある場合のみです。

    注意

    C++ では、このステートメントは System::Diagnostics::Debugger::Break() です。単体テストの Visual C++ での使用の詳細については、「Unit Tests and C++」を参照してください。

  6. ASP.NET 単体テストと、Web サイトの製品コードにブレークポイントを設定します。

  7. テストを開始します。

    これを行うには、単体テスト エクスプローラーでデバッグするテストを選択し、[テスト] のメニューで [単体テストのデバッグ][選択されたテスト] の順にクリックします。

  8. テストの実行が開始されるとすぐに、ダイアログ ボックスが表示されます。 このダイアログ ボックスには、プログラムでブレークポイントにヒットしたことが通知されます。

  9. [デバッグ] をクリックし、ソリューションが読み込まれている Visual Studio インスタンスを選択して、[はい] をクリックします。

    Visual Studio により、実行が System.Diagnostics.Debugger.Break() ステートメントで一時停止した状態でプロセスにアタッチされます。 [デバッグ] メニューの [続行] をクリックするか、F5 キーを押して、実行を次のブレークポイントまで続行させます。

    注意

    デバッグが完了したら、System.Diagnostics.Debugger.Break() ステートメントを削除してください。削除しないと、テストを実行するたびにブレークポイント ダイアログ ボックスが表示されます。

参照

方法 : テストの実行中にデバッグする
方法 : .NET アプリケーションのデバッグを有効にする