Como posso ver declarações Debug.WriteLine ao usar TestDriven.Net?
-
05-07-2019 - |
Pergunta
Eu estou tentando usar TestDriven.Net não só para testar o meu código, mas para chamar uma função no meu código cuja finalidade é imprimir o estado interno do código para a janela de depuração.
Aqui está um exemplo muito simplificado do que estou tentando fazer ..
<TestFixture()> _
Public Class UnitTest
<Test()> _
Public Sub TestDebug()
Dim oClass1 As New Class1
Assert.AreEqual(True, oClass1.IsTrue)
Debug.WriteLine("About to call .PrintDebug()")
oClass1.PrintToDebug()
End Sub
End Class
Public Class Class1
Private _IsTrue As Boolean = True
Public ReadOnly Property IsTrue() As Boolean
Get
Return _IsTrue
End Get
End Property
Public Sub PrintToDebug()
Debug.WriteLine("Internal state of Class1: " & _IsTrue)
End Sub
End Class
Eu estou tentando testar a interface pública de Class1, e de alguma forma ver a saída da função Class1.PrintToDebug()
.
Eu olhei através do TestDriven.Net quickstart , que mostra exemplos de como usar o Debug.WriteLine
em um teste de unidade, mas estranhamente isso não funciona para mim também - ou seja, a única saída na minha janela 'test' é:
------ Test started: Assembly: ClassLibrary1.dll ------
1 passed, 0 failed, 0 skipped, took 1.19 seconds.
Eu olhando tentou nas outras janelas (Debug e construir), a janela de depuração tem o 'Programa de saída' e as opções de 'excepção Mensagens' habilitado.
Eu olhei para as opções ou preferências e não pode encontrar qualquer!
Obrigado por sua ajuda!
Editar: Eu estou usando VB.Net 2.0, TestDriven.Net 2190/02/14 e NUnit 2.4.8.0
Solução
I descobriram que, enquanto Debug.Writeline () não funciona com testes de unidade, Console.WriteLine () faz.
A razão é que quando você executar testes, o processo depurador não é invocado, e Debug.WriteLine () é ignorado. No entanto, se você usar "Teste com Debugger", eu acho que (não tentei) Debug.WriteLine () irá funcionar.
Outras dicas
Trace.WriteLine()
parece ser a resposta: o)
Aqui está a saída para o exemplo da minha pergunta, usando Trace
vez de Debug
:
------ Test started: Assembly: ClassLibrary1.dll ------
Internal state of Class1: True
1 passed, 0 failed, 0 skipped, took 0.61 seconds.
Uma coisa que eu encontrei embora .. a execução é interrompida na primeira falha afirmação de teste de unidade, o que significa que as declarações Trace
não são executados se um Assert()
acima deles falhar.
Tente usar Trace.WriteLine (...) em vez. A chamada para Debug.WriteLine (...) só será feita quando DEBUG está definida. Por novos projetos do Visual Studio padrão não definir DEBUG, mas eles definem TRACE.
Eu deveria realmente mudar o exemplo de início rápido de usar rastreamento vez.
Saudações, Jamie.
Você pode querer saber que 2.16 (a versão atual beta) inclui:
1587: console de exibição Sempre mensagens de saída / erro e corredor de teste
Test Runner gerado mensagens e saída do console agora será exibido ao executar todos os testes em um projeto / solução.
1588: Opcionalmente exibição trace / debug saída quando executado em todos os testes projeto / solução
Por rastreamento padrão / saída de depuração não é exibida ao executar todos os testes em um projeto / solução. Esta lata comportamento ser modificada através da TesDriven.Net opções de painel.
Assim, parece que ele vai trabalhar na próxima versão.
IIRC, esta saída só é mostrado na janela de saída ao executar um teste individual. Tente botão direito do mouse no método de ensaio para executar apenas que o teste ...?
"Executar testes ..." pega qualquer configuração que você tem atualmente para construir a sua solução / projeto.
Você tem que se certificar de que as configurações de compilação atuais para a sua solução / projeto são definidas como "Debug" e não com "Release" (caso contrário Debug.Write * () chamadas são condicionalmente removido pelo compilador).
CTRL + ALT + I mostra a janela imediata ??p>