Contexto:
Temos alguns usuários relatando problemas com um recurso de upload de arquivo em nosso aplicativo da web. Isso só acontece ocasionalmente e sem nenhum padrão especial. Temos tentado descobrir isso por um longo tempo, adicionando informações de depuração em qualquer lugar que possamos achar que pode ajudar, rastreando os logs, etc., mas não fomos capazes de reproduzir ou descobrir.
Problema:
agora estou tentando reproduzir isso usando MSTest e WatiN para repetir a operação que deve falhar um grande número de vezes (várias centenas). Só para ter uma ideia sobre o quão longe no loop o teste foi, quero imprimir algo como:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
No entanto, isso não aparece na janela de saída. Agora eu sei que você vai ter a saída do console nos resultados do teste (bem como o que você saída Debug.Writeline
etc), mas este não está disponível até após a conclusão do teste. E como meu teste com centenas de repetições pode levar algum tempo, gostaria de saber o quão longe ele foi.
Pergunta:
Existe uma maneira de obter a saída do console na janela Saída durante a execução do teste?
Respostas:
A saída do console não está aparecendo porque o código de back-end não está sendo executado no contexto do teste.
Você provavelmente é melhor usar
Trace.WriteLine
(In System.Diagnostics) e, em seguida, adicionar um listener de rastreamento que grava em um arquivo.Este tópico do MSDN mostra uma maneira de fazer isso.
De acordo com os comentários de Marty Neal e Dave Anderson:
fonte
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
e aConsole.WriteLine()
saída para a Visualização de resultados do teste , não para a Visualização de saída . (E observe que na Visualização dos resultados do teste , pode ser necessário adicionar a coluna Output (Stdout) clicando com o botão direito e selecionando Add / Remove Columns .... ) Mas, talvez eu ainda não esteja vendo a saída na Output Visualizar significa que estou faltando alguma coisa ...Trace.Listeners.Add(new ConsoleTraceListener());
é suficiente e, em seguida, Mostrar a saída de Depurar na janela de saída.Use o
Debug.WriteLine
. Isso exibirá sua mensagem naOutput
janela imediatamente. A única restrição é que você deve executar o teste noDebug
modo.Resultado
fonte
using System.Diagnostics;
Eu encontrei uma solução própria. Sei que a resposta de Andras é provavelmente a mais consistente com o MSTEST, mas não tive vontade de refatorar meu código.
O descartável
ConsoleRedirector
é definido como:fonte
Eu tive o mesmo problema e estava "executando" os testes. Se, em vez disso, eu "Depurar" os testes, a saída de Depuração será exibida perfeitamente como todos os outros Trace e Console. Não sei embora como ver a saída se você "Executar" os testes.
fonte
System.Diagnostics.Debug.WriteLine
durante a depuração de testes, mas como você começaConsole.WriteLine
a trabalhar? Isso não termina na saída normal (atualização ao vivo) para mim.É melhor você configurar um único teste e criar um teste de desempenho a partir desse teste. Dessa forma, você pode monitorar o progresso usando o conjunto de ferramentas padrão.
fonte