VSTest.Console.exe opções de linha de comando

VSTest.Console.exe é a ferramenta de linha de comando para executar testes. Você pode especificar várias opções em qualquer ordem na linha de comando. Essas opções estão listadas em opções gerais de linha de comando.

Nota

O adaptador MSTest no Visual Studio também funciona no modo herdado (equivalente à execução de testes com mstest.exe) para compatibilidade. No modo herdado, ele não pode aproveitar o recurso TestCaseFilter. O adaptador pode alternar para o modo herdado quando um arquivo testsettings é especificado, forcelegacymode é definido como verdadeiro em um arquivo de runsettings ou usando atributos como HostType.

Para executar testes automatizados em um computador baseado em arquitetura do ARM, você deve usar VSTest.Console.exe.

Abra prompt de comando do desenvolvedor para usar a ferramenta de linha de comando ou encontre a ferramenta em %Program Files(x86)%\Microsoft Visual Studio\<versão>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.

Opções gerais de linha de comando

A tabela a seguir lista as opções comumente usadas para VSTest.Console.exe e descrições curtas delas. Você pode ver um resumo semelhante digitando VSTest.Console/? em uma linha de comando. Para obter a referência completa, incluindo opções internas e herdadas que não estão listadas aqui, consulte vstest.console.exe opções de linha de comando e, especificamente , comutadores Omitidos no repositório vstest.

Opção Descrição
[nomes de arquivo de teste] Execute testes dos arquivos especificados. Separe vários nomes de arquivo de teste com espaços.
Exemplos: mytestproject.dll, mytestproject.dll myothertestproject.exe
/Settings:[nome do arquivo] Execute testes com configurações adicionais, como coletores de dados. Para obter mais informações, consulte Configurar testes de unidade usando um arquivo .runsettings
Exemplo: /Settings:local.runsettings
/Tests:[nome de teste] Execute testes com nomes que contêm os valores fornecidos. Esse comando corresponde ao nome de teste completo, incluindo o namespace. Para fornecer vários valores, separe-os por vírgulas.
Exemplo: /Tests:TestMethod1,testMethod2
A opção de linha de comando /Tests não pode ser usada com a opção de linha de comando /TestCaseFilter .
/ paralela Especifica que os testes sejam executados em paralelo. Por padrão, até todos os núcleos disponíveis no computador podem ser usados. Você pode configurar o número de núcleos a serem usados em um arquivo de configurações.
/InIsolation Executa os testes em um processo isolado.
Esse isolamento torna o processo vstest.console.exe menos provável de ser interrompido em um erro nos testes, mas os testes podem ser executados mais lentamente.
/TestAdapterPath:[caminho] Força o processo de vstest.console.exe a usar adaptadores de teste personalizados de um caminho especificado (se houver) na execução do teste.
Exemplo: /TestAdapterPath:[pathToCustomAdapters]
/Platform:[tipo de plataforma] Força a arquitetura de plataforma fornecida a ser usada, em vez da plataforma determinada do runtime atual. Os valores não diferenciam maiúsculas de minúsculas; os valores aceitos são x86, , x64, ARM, ARM64, S390x, , Ppc64le, RiscV64e LoongArch64.
Em Windows, somente x86 e x64 podem ser forçados de forma confiável; especificando ARM resultados em x64 na maioria dos sistemas. Não especifique essa opção para ser executada em um runtime que não esteja na lista de valores válidos.
/Framework: [versão da estrutura] Versão do .NET de destino a ser usada para execução de teste.
Os formulários curtos da estrutura moderna são aceitos e analisados pelo analisador de estrutura do NuGet, por exemplo net48, net6.0ou net10.0 (assim como as formas longas, como .NETFramework,Version=v4.8 e .NETCoreApp,Version=v10.0).
Os aliases Framework35herdados, Framework40, Framework45e FrameworkUap10FrameworkCore10também são aceitos.
TargetFrameworkAttribute é usado para detectar automaticamente essa opção do assembly e usa como padrão Framework40 quando o atributo não está presente. Você deve especificar essa opção explicitamente se remover o TargetFrameworkAttribute de seus assemblies do .NET Core.
Se a estrutura de destino for especificada como framework35, os testes serão executados no "modo de compatibilidade" clr 4.0.
Exemplo: /Framework:net8.0
/TestCaseFilter:[ expressão] Execute testes que correspondam à expressão fornecida.
<Expression> é do formato <propriedade>=<value>[|<Expression>].
Exemplo: /TestCaseFilter:"Priority=1"
Exemplo: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"
A opção de linha de comando /TestCaseFilter não pode ser usada com a opção /Tests command-line.
Para obter informações sobre como criar e usar expressões, consulte filtro TestCase. Ao digitar um filtro diretamente em um shell, consulte expressões de filtro escape no shell.
/Environment:[NAME]=[VALUE] Define o valor de uma variável de ambiente para o processo de host de teste. Criará a variável se ela não existir e a substituirá se existir. Essa opção implica /InIsolation e força os testes a serem executados em um processo isolado. Especifique a opção várias vezes para definir várias variáveis. Forma curta: /e.
Exemplo: /e:VARIABLE1=VALUE1
/? Exibe informações de uso.
/Agente:[uri/friendlyname] Especifique um agente para resultados de teste. Especifique o parâmetro várias vezes para habilitar vários agentes.
Exemplo: para registrar os resultados em um TRX (Arquivo de Resultados de Teste) do Visual Studio, use
/Logger:trx
[; LogFileName=<Padrões para o nome de arquivo exclusivo>]
Use LogFilePrefix=<prefix> em vez de LogFileName manter um arquivo separado com carimbo de data/hora por execução. LogFileName define um nome explícito e substitui o arquivo anterior, enquanto LogFilePrefix não o faz.
Para obter mais informações, consulte o exemplo de registro em log.
/ListTests:[nome do arquivo] Lista os testes descobertos do contêiner de teste fornecido. Forma curta: /lt.
Observação: a opção /TestCaseFilter não tem efeito ao listar testes; ele controla apenas quais testes são executados.
/Blame Executa os testes no modo de culpa. Essa opção é útil para isolar testes problemáticos que causam a falha do host de teste. Quando uma falha é detectada, ela cria um arquivo de sequência em TestResults/<Guid>/<Guid>_Sequence.xml que captura a ordem dos testes que foram executados antes da falha.
Você também pode coletar uma falha ou despejo de travamento, por exemplo /Blame:CollectDump;DumpType=full ou /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Os comutadores equivalentes dotnet test são --blame-crash e --blame-hang.
Para obter a matriz de opções completa e os requisitos de coleta de despejo, consulte o coletor de dados Blame.
/Diag:[nome do arquivo] Grava logs de rastreamento de diagnóstico no arquivo especificado.
Defina o nível de rastreamento com /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (o padrão é verbose).
/ResultsDirectory:[path] O diretório de resultados do teste será criado no caminho especificado, se não existir.
Exemplo: /ResultsDirectory:<pathToResultsDirectory>
/ParentProcessId:[parentProcessId] ID do processo pai responsável por iniciar o processo atual.
/Port:[port] A porta para conexão de soquete e o recebimento das mensagens de evento.
/Collect:[dataCollector friendlyName] Habilita o coletor de dados para a execução de teste. Mais informações.
@[arquivo] Lê opções adicionais do arquivo de resposta especificado. Os argumentos no arquivo são separados por espaço em branco (espaços ou novas linhas) e há suporte para aspas, portanto, as opções podem abranger várias linhas.
Exemplo: vstest.console.exe @options.rsp

Ponta

As opções e os valores não diferenciam maiúsculas de minúsculas.

Exemplos

A sintaxe para executar vstest.console.exe é:

vstest.console.exe [TestFileNames] [Options]

Por padrão, o comando retorna 0 quando é encerrado normalmente, mesmo que nenhum teste seja descoberto. Se você quiser retornar um valor diferente de zero se nenhum teste for descoberto, use <TreatNoTestsAsError>true</TreatNoTestsAsError> opção runsettings.

O comando a seguir executa vstest.console.exe para a biblioteca de teste myTestProject.dll:

vstest.console.exe myTestProject.dll

O comando a seguir executa vstest.console.exe com vários arquivos de teste. Separar nomes de arquivo de teste com espaços:

vstest.console.exe myTestFile.dll myOtherTestFile.dll

O comando a seguir é executado vstest.console.exe com várias opções. Ele executa os testes no arquivo myTestFile.dll em um processo isolado e usa as configurações especificadas no arquivo Local.RunSettings. Além disso, ele executa apenas testes marcados como "Priority=1" e registra os resultados em um arquivo de .trx.

vstest.console.exe myTestFile.dll /Settings:Local.RunSettings /InIsolation /TestCaseFilter:"Priority=1" /Logger:trx

O comando a seguir executa vstest.console.exe com a opção /blame para a biblioteca de teste myTestProject.dll:

vstest.console.exe myTestFile.dll /blame

Se ocorrer uma falha no host de teste, o arquivo sequence.xml será gerado. O arquivo contém nomes totalmente qualificados dos testes em sua sequência de execução até e incluindo o teste específico que estava em execução no momento da falha.

Se não houver falha no host de teste, o arquivo sequence.xml não será gerado.

Exemplo de um arquivo de sequence.xml gerado:

<?xml version="1.0"?>
<TestSequence>
  <Test Name="TestProject.UnitTest1.TestMethodB" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
  <Test Name="TestProject.UnitTest1.TestMethodA" Source="D:\repos\TestProject\TestProject\bin\Debug\TestProject.dll" />
</TestSequence>

Nesse caso, o <Test Name> último listado é o teste que estava em execução no momento da falha.

Códigos de saída

vstest.console.exe retorna um dos dois códigos de saída:

Code Meaning
0 Êxito. A operação solicitada foi concluída e, para uma execução de teste, todos os testes executados foram aprovados.
1 Fracasso. Por exemplo, um ou mais testes falharam, um erro de execução foi relatado, a linha de comando estava inválida ou ausente, uma fonte de teste não pôde ser carregada ou a execução foi anulada ou cancelada.

O processo nunca retorna nenhum outro valor. Quando você executa testes, dotnet testo SDK do .NET apresenta um código de saída diferente de zero quando a execução falha da mesma maneira.

Quando a descoberta não encontra nenhum teste correspondente, o executor imprime um aviso em vez de um erro e, por padrão, ainda retorna 0. Para fazer uma execução que descubra ou selecione nenhum retorno 1 de testes, defina <TreatNoTestsAsError>true</TreatNoTestsAsError> no elemento RunConfiguration do arquivo .runsettings . Para obter mais informações, consulte Configurar testes de unidade usando um arquivo .runsettings.

Expressões de filtro de escape no shell

Uma expressão /TestCaseFilter é analisada pelo shell e pela plataforma de teste, portanto, alguns caracteres precisam de escape específico do shell antes quevstest.console.exe os receba. Citar toda a expressão, como nos exemplos anteriores neste artigo, evita a maioria dos problemas. Os seguintes casos precisam de cuidados extras:

  • PowerShell: a vírgula (,) é o operador de matriz e o ponto-e-vírgula (;) é um separador de instrução. Assopa toda a expressão de filtro para que ela seja passada literalmente, por exemplo /TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod".

  • Bash e zsh (Linux e macOS): escape ! com uma barra invertida quando você usa o !~ operador (não contém), por exemplo --filter FullyQualifiedName\!~IntegrationTests , com dotnet test. Aspa também valores que contêm caracteres com significado especial para o shell, como <, >ou , em uma lista de argumentos de tipo genérico:

    dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
    

Para obter a referência de filtragem completa e as propriedades compatíveis por estrutura de teste, consulte o filtro TestCase.

Exemplo de registro em log

Cada agente define seus próprios parâmetros. Ao contrário do trx, o agente do console permite que você defina o nível de verbosidade. Para obter informações adicionais, digite VSTest.Console/? na linha de comando.

Aqui está um exemplo para o agente do console:

vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed

Os níveis de verbosidade com suporte incluem silencioso, mínimo, normal e detalhado.

No PowerShell, você precisa usar aspas:

vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"

Para obter a lista completa de agentes disponíveis, bem como instruções para criar seu próprio agente, consulte os resultados do teste de relatório no repositório vstest.

Exemplo de UWP

Para UWP, o arquivo appxrecipe deve ser referenciado em vez de uma DLL.

vstest.console.exe /Logger:trx /Platform:x64 /framework:frameworkuap10 UnitTestsUWP\bin\x64\Release\UnitTestsUWP.build.appxrecipe

Variáveis de ambiente

A plataforma de teste reconhece várias variáveis de ambiente. Veja a seguir os mais úteis quando você executa testes na linha de comando. Para obter a lista completa, consulte variáveis de ambiente compreendidas pela plataforma de teste no repositório vstest.

Variável Descrição
VSTEST_CONNECTION_TIMEOUT Tempo limite, em segundos, para estabelecer conexões entre componentes da plataforma de teste (vstest.console.exe, testhost e coletor de dados). O padrão é 90. Aumente-o em computadores lentos ou quando a latência de rede causar tempos limite de conexão.
VSTEST_DIAG Habilita o log de diagnóstico e especifica o caminho para o arquivo de log. Equivalente à opção /Diag .
VSTEST_DIAG_VERBOSITY Define a verbosidade do log de diagnóstico quando VSTEST_DIAG está habilitado. Os valores válidos são Verbose, Infoe WarningError (o padrão éVerbose).
VSTEST_HOST_DEBUG Defina como qualquer valor não vazio para habilitar a depuração do processo testhost.
VSTEST_RUNNER_DEBUG Defina como qualquer valor não vazio para habilitar a depuração do executor (vstest.console.exe).
VSTEST_DUMP_PATH Substitui o diretório padrão em que os despejos de falhas de culpa são armazenados.
VSTEST_DUMP_FORCEPROCDUMP Defina como qualquer valor não vazio para forçar o ProcDump a ser usado para coleta de despejo de memória.
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING Defina para desabilitar a 1 definição da codificação UTF-8 na saída do console.
VSTEST_CONSOLE_PATH Caminho para o vstest.console.exe executável usado pelo aplicativo de encaminhamento do SDK do dotnet test .NET. Equivalente a -p:VSTestConsolePath quando você é executado dotnet test em um projeto.