Depurando testes TAEF
Configuração do depurador
Por padrão, os casos de teste são executados em um processo separado do que TE.exe: TE.ProcessHost.exe.
Depurando processos filho de TE.exe (somente windbg/cdb)
Se você usar um depurador como cdb ou windbg, basta passar a opção '-o' para o depurador. Isso configurará o depurador para depurar automaticamente os processos filho, tudo dentro da mesma instância do depurador.
Por exemplo:
windbg -o te.exe MyTests.dll
Em seguida, para alternar para o processo em que os testes são executados, use o | Comando (pipe). O comando pipe para alternar processos é usado exaclty como o comando ~ (tilda) para alternar threads.
Por exemplo:
|1s - sets the current process to the second loaded process.
Executando testes "InProc" (Visual Studio/windbg/cdb)
Se você preferir usar o Visual Studio para fazer sua depuração, o método acima não funcionará para você. Nesse caso, basta configurar o depurador para executar TE.exe, definir os pontos de interrupção apropriados em para o caso de teste e passar a opção /inproc para TE.exe. Isso garantirá que todos os testes sejam executados no processo de TE.exe em vez de gerar um novo processo.
Por exemplo:
start devenv /debugexe te.exe MyTests.dll /inproc
O comando acima iniciará o Visual Studio. Em seguida, abra o código-fonte para seus casos de teste e defina os pontos de interrupção apropriados. Por fim, pressione F5 para iniciar o caso de teste e ele deverá ser interrompido no primeiro ponto de interrupção (se os símbolos tiverem sido carregados corretamente).
As etapas descritas acima funcionam apenas com símbolos corretos definidos no Visual Studio. Pelo menos, você precisa definir os símbolos para a dll de teste que você está depurando. Para definir símbolos no Visual Studio:
- Menu Selecionar Ferramentas
- Selecione Opções...
- Selecione Depuração no menu com aparência de árvore à esquerda
- Selecionar Símbolos em Depuração
- Insira o caminho dos símbolos em Local do arquivo de símbolo (*.pdb): seção
- Salvar suas configurações
Invadir automaticamente o Depurador ("breakOnCreate" e "breakOnInvoke")
Para facilitar o processo de depuração, o Taef fornece a capacidade de entrar automaticamente no depurador antes que cada classe de teste seja instanciada e/ou antes que cada método de teste seja invocado.
Por exemplo:
cdb -gG te.exe MyTests.dll /inproc /breakOnCreate /breakOnInvoke
O comando acima iniciará Te.exe em cdb. O Taef será dividido no depurador logo antes de cada classe de teste ser instanciada e antes de cada método de teste ser invocado.
Nota: É recomendável usar esse recurso durante a execução Te.exe em um depurador e também especificar a opção /inProc.