TAEF テストをデバッグする
デバッガー - 構成
既定では、テスト ケースは TE.exe: TE.ProcessHost.exe とは別のプロセスで実行されます。
TE.exeの子プロセスのデバッグ (windbg/cdb のみ)
cdb や windbg などのデバッガーを使用する場合は、単純に '-o' スイッチをデバッガーに渡すことができます。 これにより、同じデバッガー インスタンス内のすべての子プロセスを自動的にデバッグするようにデバッガーが構成されます。
次に例を示します。
windbg -o te.exe MyTests.dll
次に、テストを実行するプロセスに切り替えるには、| (pipe) コマンドを使います。 プロセスを切り替えるためのパイプ コマンドは、スレッドを切り替えるための ~ (tilda) コマンドと全く同じように使われます。
次に例を示します。
|1s - sets the current process to the second loaded process.
テストの実行 "InProc" (Visual Studio/windbg/cdb)
Visual Studio を使用してデバッグを行う場合、上記の方法は機能しません。 この場合は、TE.exe を実行するようにデバッガーを構成し、テスト ケースに適切なブレークポイントを設定し、/inproc スイッチをTE.exeに渡します。 これにより、すべてのテストが新しいプロセスを生成するのではなく、TE.exe プロセス内で実行されるようになります。
次に例を示します。
start devenv /debugexe te.exe MyTests.dll /inproc
上記のコマンドを実行すると、Visual Studio が起動します。 次に、テスト ケースのソース コードを開き、適切なブレークポイントを設定します。 最後に、F5 キーを押してテスト ケースを開始します。最初のブレークポイントで中断します (シンボルが正しく読み込まれている場合)。
上記の手順は、Visual Studio で設定された正しいシンボルでのみ機能します。 少なくとも、デバッグするテスト dll にシンボルを設定する必要があります。 Visual Studio でシンボルを設定するには
- [ツール メニュー] を選択します
- [オプション] を選択します
- 左側のツリー表示メニューの [デバッグ] を選択します
- [デバッグ] の下の [シンボル] を選択します
- シンボル ファイル (*.pdb) の場所: セクションにシンボル パスを入力します
- 設定を保存する
デバッガーに自動的に割り込む ("breakOnCreate" と "breakOnInvoke")
デバッグ プロセスを容易にするために、Taef は、各テスト クラスがインスタンス化される前または各テスト メソッドが呼び出される前に、デバッガーに自動的に割り込む機能を提供します。
次に例を示します。
cdb -gG te.exe MyTests.dll /inproc /breakOnCreate /breakOnInvoke
上記のコマンドは、cdb の下でTe.exeを起動します。 Taef は、各テスト クラスがインスタンス化される直前と、各テスト メソッドが呼び出される前にデバッガーに割り込みます。
注: デバッガーでTe.exeを実行しているときにこの機能を使用し、/inProc オプションも指定することをお勧めします。