调试 TAEF 测试

调试器配置

默认情况下,测试用例在单独的进程中执行,而不是TE.exe:TE.ProcessHost.exe。

仅调试 TE.exe (windbg/cdb 的子进程)

如果使用 cdb 或 windbg 等调试器,只需将“-o”开关传递给调试器即可。 这会将调试器配置为自动调试同一调试器实例中的子进程。

例如:

windbg -o te.exe MyTests.dll

然后,若要切换到运行测试的进程,请使用 | (管道) 命令。 用于切换进程的管道命令用作用于切换线程的 ~ (tilda) 命令。

例如:

|1s - sets the current process to the second loaded process.

(Visual Studio/windbg/cdb) 运行“InProc”测试

如果希望使用 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 选项。