方法 : 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 テストを実行中にデバッグするには
テスト対象の ASP.NET Web サービス プロジェクトと、それをテストする ASP.NET 単体テストを作成します。
この Web サイト プロジェクトを作成する場合は、[新しい Web サイト] ダイアログ ボックスの [場所] で [HTTP] または [FTP] を選択します。 これにより、ホスト プロセスは IIS になります。
ASP.NET Web プロジェクトでデバッグを有効にします。 これを行うには、プロジェクトの Web 構成ファイルを編集します。 プロジェクトに Web.config ファイルが既に存在する場合は、手順 4. に進みます。 存在しない場合は、ここでファイルを追加します。それには、ソリューションで Web サイト プロジェクトのショートカット メニューを開き、[新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[新しい項目の追加] ダイアログ ボックスの [Web 構成ファイル] をクリックし、[追加] をクリックします。
Web.config ファイルが Web サイト プロジェクトに追加されます。 Web.config ファイルの使用方法の詳細については、「方法 : .NET アプリケーションのデバッグを有効にする」を参照してください。
Web.config ファイルで、<compilation debug="false"/> という行を <compilation debug="true"/> に変更します。
(省略可能) ASP.NET 単体テストと、Web サイトの製品コードにブレークポイントを設定します。
デバッガーを IIS プロセスにアタッチします。 これを行うには、[デバッグ] をクリックし、[プロセスにアタッチ] をクリックします。
[プロセスにアタッチ] ダイアログ ボックスが表示されます。
[選択可能なプロセス] の下で、デバッガーをアタッチするプロセス名を探します。
必要なプロセスが表示されないときは、その他の実行中のプロセスも表示できます。 これを行うには、[すべてのユーザーからのプロセスを表示する] と [すべてのセッションのプロセスを表示する] をオンにします。
[選択可能なプロセス] の下にあるプロセス名を選択し、[アタッチ] をクリックします。
アタッチする必要があるプロセスが実行されていないときは、[キャンセル] をクリックし、プロセスを起動します。 これを行うには、ソリューション エクスプローラーで、Web サイト プロジェクトのショートカット メニューを開き、[ブラウザーで表示] をクリックします。 次に [デバッグ] をクリックし、もう一度 [プロセスにアタッチ] をクリックすると、プロセスが起動し、[選択可能なプロセス] に表示されます。 プロセス名を選択し、[アタッチ] をクリックします。
テストを開始します。
これを行うには、単体テスト エクスプローラーでデバッグするテストを選択し、[テスト] のメニューで [単体テストのデバッグ]、[選択されたテスト] の順にクリックします。
注意
テストを実行する場合は、[選択範囲のデバッグ] ではなく、[選択範囲の実行] を選択します。相違点は、[選択範囲のデバッグ] を選択すると、デバッガーはテストが完了すると自動的にデタッチされる一方、[選択範囲の実行] を選択すると、デバッガーはアタッチされたままになることです。デバッグ中にテストを何度も実行する必要があり、そのたびにプロセスをアタッチし直すのを回避したい場合には、[選択範囲の実行] が便利です。[選択範囲の実行] を選択した場合、デバッグが完了してプロセスをデタッチするには、[デバッグ] メニューの [デバッグの停止] をクリックするか、Shift キーを押しながら F5 キーを押します。
ASP.NET 開発サーバーで実行中の場合のデバッグ
テストを ASP.NET 開発サーバーで実行中にデバッグするには
テスト対象の ASP.NET Web サービス プロジェクトと、それをテストする ASP.NET 単体テストを作成します。
この Web サイト プロジェクトを作成する場合は、[新しい Web サイト] ダイアログ ボックスの [場所] で [ファイル システム] を選択します。 これにより、ホスト プロセスは ASP.NET 開発サーバーになります。
ASP.NET Web プロジェクトでデバッグを有効にします。 これを行うには、プロジェクトの Web 構成ファイルを編集します。 プロジェクトに Web.config ファイルが既に存在する場合は、手順 4. に進みます。 存在しない場合は、ここでファイルを追加します。それには、ソリューションで Web サイト プロジェクトのショートカット メニューを開き、[新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[新しい項目の追加] ダイアログ ボックスの [Web 構成ファイル] をクリックし、[追加] をクリックします。
Web.config ファイルが Web サイト プロジェクトに追加されます。 Web.config ファイルの使用方法の詳細については、「方法 : .NET アプリケーションのデバッグを有効にする」を参照してください。
Web.config ファイルで、<compilation debug="false"/> という行を <compilation debug="true"/> に変更します。
System.Diagnostics.Debugger.Break() ステートメントを ASP.NET 単体テストの先頭に追加します。
注意
コードに設定したブレークポイントがヒットするのは、ブレークポイントがこの System.Diagnostics.Debugger.Break() ステートメントより後にある場合のみです。
注意
C++ では、このステートメントは System::Diagnostics::Debugger::Break() です。単体テストの Visual C++ での使用の詳細については、「Unit Tests and C++」を参照してください。
ASP.NET 単体テストと、Web サイトの製品コードにブレークポイントを設定します。
テストを開始します。
これを行うには、単体テスト エクスプローラーでデバッグするテストを選択し、[テスト] のメニューで [単体テストのデバッグ]、[選択されたテスト] の順にクリックします。
テストの実行が開始されるとすぐに、ダイアログ ボックスが表示されます。 このダイアログ ボックスには、プログラムでブレークポイントにヒットしたことが通知されます。
[デバッグ] をクリックし、ソリューションが読み込まれている Visual Studio インスタンスを選択して、[はい] をクリックします。
Visual Studio により、実行が System.Diagnostics.Debugger.Break() ステートメントで一時停止した状態でプロセスにアタッチされます。 [デバッグ] メニューの [続行] をクリックするか、F5 キーを押して、実行を次のブレークポイントまで続行させます。
注意
デバッグが完了したら、System.Diagnostics.Debugger.Break() ステートメントを削除してください。削除しないと、テストを実行するたびにブレークポイント ダイアログ ボックスが表示されます。