方法 : ASP.NET ソリューションでのテスト中にデバッグする
更新 : 2007 年 11 月
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 のバージョンがオペレーティング システムによって異なるからです。次の表に、各オペレーティング システムで使用されるプロセスを示します。第 1 列目に示すオペレーティング システムに対し、[プロセスにアタッチ] ダイアログ ボックスの [選択可能なプロセス] セクションの第 3 列目で指定されたプロセス名を使用します。
オペレーティング システム |
ホスト プロセス |
ASP.NET プロセス名 |
Windows Server 2003 |
IIS 6.0 |
w3wp.exe |
Windows XP |
IIS 5.1 |
aspnet_wp.exe |
Windows 2000 |
IIS 5.0 |
aspnet_wp.exe |
IIS で ASP.NET テストを実行中にデバッグするには
テスト対象の ASP.NET Web サービス プロジェクトと、それをテストする ASP.NET 単体テストを作成します。
この Web サイト プロジェクトを作成する場合は、[新しい Web サイト] ダイアログ ボックスの [場所] で [HTTP] または [FTP] を選択します。これにより、ホスト プロセスは IIS になります。
詳細については、「方法 : ASP.NET 単体テストを作成する」を参照してください。
ASP.NET Web プロジェクトでデバッグを有効にします。これを行うには、プロジェクトの Web 構成ファイルを編集します。プロジェクトに Web.config ファイルが既に存在する場合は、手順 4 に進みます。Web.config ファイルがない場合は、ここで追加します。ソリューションの 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 単体テストを作成する」を参照してください。
ASP.NET Web プロジェクトでデバッグを有効にします。これを行うには、プロジェクトの Web 構成ファイルを編集します。プロジェクトに Web.config ファイルが既に存在する場合は、手順 4 に進みます。Web.config ファイルがない場合は、ここで追加します。ソリューションの 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++ での使用の詳細については、「ユニット テストと C++」を参照してください。
ASP.NET 単体テストと、Web サイトの製品コードにブレークポイントを設定します。
テストを開始します。
これを行うには、[テスト ビュー] ウィンドウで、実行するテストを右クリックし、[選択範囲の実行] をクリックします。
テストの実行が開始されるとすぐに、ダイアログ ボックスが表示されます。このダイアログ ボックスには、プログラムでブレークポイントにヒットしたことが通知されます。
[デバッグ] をクリックし、ソリューションが読み込まれている Visual Studio インスタンスを選択し、[はい] をクリックします。
Visual Studio により、実行が System.Diagnostics.Debugger.Break() ステートメントで一時停止した状態でプロセスにアタッチされます。[デバッグ] メニューの [続行] をクリックするか、F5 キーを押して、実行を次のブレークポイントまで続行させます。
メモ : デバッグが完了したら、System.Diagnostics.Debugger.Break() ステートメントを削除してください。削除しないと、テストを実行するたびにブレークポイント ダイアログ ボックスが表示されます。