Saída terminal

O terminal test reporter é a implementação incorporada de relatório de estado e progresso para o terminal (consola). Faz parte do núcleo Microsoft. Testing.Platform (MTP) e não requer pacotes NuGet adicionais.

Modos de saída

Há dois modos de saída disponíveis:

  • Normal, a saída contém o banner, reporta falhas completas dos testes, mensagens de aviso e escreve o resumo da execução. Saída com 1 teste reprovado e um resumo

  • Detailed, o mesmo que Normal, mas também inclui os testes Passed. Saída com 1 reprovação e 1 aprovação no teste e um resumo

ANSI (Instituto Nacional Americano de Normalização)

Internamente, existem 2 formatadores de saída diferentes que detetam automaticamente a capacidade do terminal para lidar com códigos de escape ANSI.

  • O formatador ANSI é usado quando o terminal é capaz de renderizar os códigos de escape.
  • O formatador não-ANSI é usado quando o terminal não consegue lidar com os códigos de escape, quando --no-ansi é usado ou quando a saída é redirecionada.

O padrão é detetar automaticamente as capacidades.

Progress

Um indicador de progresso é gravado no terminal. O indicador de progresso mostra o número de testes aprovados, testes falhados e testes saltados, seguido do nome do conjunto testado, da sua estrutura alvo e da arquitetura.

Uma barra de progresso com 23 testes aprovados, 0 testes reprovados e 0 testes ignorados

A barra de progresso é escrita com base no modo selecionado:

  • ANSI, a barra de progresso é animada, aderindo à parte inferior da tela e é atualizada a cada 500ms. A barra de progresso é ocultada quando a execução do teste é concluída.
  • não-ANSI, a barra de progresso é gravada no ecrã tal como está a cada 3 segundos. O progresso mantém-se no resultado.

Saída direta da consola e redesenho de progresso

Para animar a barra de progresso, o renderizador de progresso ANSI controla o cursor do terminal e redesenha repetidamente a parte inferior do ecrã. Qualquer texto escrito diretamente para stdout ou stderr fora do caminho de captura do framework de teste pode ser sobrescrito ou removido durante este redesenho. Por exemplo, uma chamada para Console.WriteLine a partir do código do ciclo de vida ao nível do assembly ou da sessão (como um gancho Before(Assembly) ou Before(TestSession)), ou a partir de uma extensão, pode piscar brevemente e depois desaparecer quando a barra de progresso é atualizada.

Este comportamento é distinto do resultado padrão capturado por teste e do erro padrão. A saída que um teste escreve enquanto está a correr é capturada pelo framework e mostrada de acordo com --show-stdout e --show-stderr, para que a barra de progresso não a sobrescriba.

Se o teu código tiver de escrever diretamente na consola e precisares de que essa saída permaneça visível, desativa o progresso (--progress off no MTP 2.3.0+, ou --no-progress em versões anteriores). Alternativamente, desative o ANSI (--ansi off no MTP 2.3.0+, ou --no-ansi em versões anteriores) para usar a saída de progresso não-ANSI, que adiciona novas linhas em vez de serem redesenhadas no local e não sobrescreve a saída direta anterior.

Opções

Opção Versão MTP Description
--no-progress Desativa a apresentação do progresso no ecrã. Descontinuado no MTP 2.3.0 em favor de --progress off.
--progress 2.3.0 Controla se o progresso é mostrado. Os valores válidos são auto (por defeito), on (também aceita true, enable, 1), e off (também aceita false, disable, 0).
--no-ansi Desativa a saída de caracteres de escape ANSI para a tela.
--ansi 2.3.0 Controla se caracteres de escape ANSI são emitidos. Os valores válidos são auto (por defeito), on (também aceita true, enable, 1), e off (também aceita false, disable, 0).
--output Especifica a verbosidade de saída ao relatar testes. Os valores válidos são Normal e Detailed. A predefinição é Normal.
--show-stdout 2.2.1 Determina quando mostrar a saída padrão capturada de um teste. Os valores válidos são All, Failede None. A predefinição é All.
--show-stderr 2.2.1 Determina quando mostrar a saída de erro capturada de um teste. Os valores válidos são All, Failede None. A predefinição é All.

Note

Um traço (—) na coluna da versão MTP marca as opções principais que não estão ligadas a uma versão específica porque estão disponíveis desde os lançamentos iniciais da plataforma.

Note

A partir da versão 2.3.0 do MTP, quando o MTP deteta que está a ser executado num ambiente de LLM ou de ferramenta de IA, suprime o banner de arranque e altera o valor predefinido de --show-stdout e --show-stderr de All para Failed para reduzir o ruído.