Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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.
Observação
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 true em um arquivo runsettings ou usando atributos como HostType.
Para executar testes automatizados em uma máquina baseada em arquitetura ARM, você deve usar VSTest.Console.exe.
Abra Prompt de Comando do Desenvolvedor usar a ferramenta de linha de comando ou você pode encontrá-la em %Program Files(x86)%\Microsoft Visual Studio\<versão>\<edition>\common7\ide\CommonExtensions\<Platform | Microsoft>.
Opções gerais de linha de comando
A tabela seguinte lista as opções mais usadas para VSTest.Console.exe e descrições curtas das mesmas. Você pode ver um resumo semelhante digitando VSTest.Console/? em uma linha de comando. Para a referência completa, incluindo switches internos e legados que não estão listados aqui, veja vstest.console.exe opções de linha de comandos e especificamente switches omitidos no repositório vstest.
| Opção | Descrição |
|---|---|
| [nomes de arquivo de teste] | Execute testes a partir 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 do teste] | Execute testes com nomes que contenham os valores fornecidos. Este comando corresponde ao nome de teste completo, incluindo o namespace. Para fornecer vários valores, separe-os por vírgulas. Exemplo: /Tests:TestMethod1,testMethod2A opção de linha de comandos /Tests não pode ser usada com a opção de linha de comandos /TestCaseFilter . |
| /Parallel | Especifica que os testes sejam executados em paralelo. Por padrão, até todos os núcleos disponíveis na máquina 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 de 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 de teste. Exemplo: /TestAdapterPath:[pathToCustomAdapters] |
| /Platform:[tipo de plataforma] | Força a utilização da arquitetura da plataforma dada, em vez da plataforma determinada a partir do tempo de execução atual. Os valores são indiferentes a maiúsculas e maiúsculas; Os valores aceites são x86, x64, ARM, ARM64, S390x, Ppc64le, RiscV64, e LoongArch64.No Windows, apenas x86 e x64 podem ser forçados de forma fiável; especificar ARM resultados em x64 na maioria dos sistemas. Não especifiquem esta opção para correr num runtime que não esteja na lista de valores válidos. |
| /Framework: [versão framework] | Versão .NET de destino a ser usada para execução de teste. As formas curtas modernas do framework são aceites e analisadas pelo parser do framework NuGet, por exemplo net48, , ou net10.0 (assim como as formas longas como .NETFramework,Version=v4.8 e .NETCoreApp,Version=v10.0net6.0).Os pseudónimos Framework35legados , Framework40, Framework45, FrameworkCore10, e FrameworkUap10 também são aceites.O TargetFrameworkAttribute é usado para detetar automaticamente esta opção na sua assembleia, e por defeito é quando Framework40 o atributo não está presente. Você deve especificar essa opção explicitamente se remover o TargetFrameworkAttribute dos assemblies do .NET Core.Se a estrutura de destino for especificada como Framework35, os testes serão executados no "modo de compatibilidade" do CLR 4.0. Exemplo: /Framework:net8.0 |
| /TestCaseFilter:[expression] | Execute testes que correspondam à expressão fornecida. < > de expressão é da propriedade de formato <>=<valor>[|<Expression>]. Exemplo: /TestCaseFilter:"Priority=1"Exemplo: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName"A opção de linha de comandos /TestCaseFilter não pode ser usada com a opção de linha de comandos /Tests . Para obter informações sobre como criar e usar expressões, consulte filtro TestCase. Quando escreves um filtro diretamente numa casca, vê expressões do filtro de escape no shell. |
| /Ambiente:[NOME]=[VALOR] | Define o valor de uma variável de ambiente para o processo anfitrião de teste. Cria a variável se ela não existir, e sobrepõe-a se existir. Esta opção implica /InIsolation e força os testes a serem executados num processo isolado. Especifique a opção várias vezes para definir várias variáveis. Forma abreviada: /e. Exemplo: /e:VARIABLE1=VALUE1 |
| /? | Exibe informações de uso. |
| /Logger:[uri/friendlyname] | Especifique um registrador para os resultados do teste. Especifique o parâmetro várias vezes para habilitar vários registradores. Exemplo: Para registrar resultados em um arquivo de resultados de teste do Visual Studio (TRX), use /Logger:trx [; LogFileName=<Padrão para nome de arquivo exclusivo>] Use LogFilePrefix=<prefix> em vez de LogFileName manter um ficheiro separado com carimbo temporal por execução.
LogFileName define um nome explícito e sobrescreve o ficheiro anterior, enquanto LogFilePrefix não o faz.Para mais informações, veja exemplo de Registo. |
| /ListTests:[nome do arquivo] | Lista os testes descobertos a partir do recipiente de teste fornecido. Forma curta: /lt. Nota: A opção /TestCaseFilter não tem efeito ao listar testes; ele apenas controla quais testes são executados. |
| /Culpa | Executa os testes no modo de culpa. Essa opção é útil para isolar testes problemáticos que causam falhas no host de teste. Quando uma falha é detetada, ele cria um arquivo de sequência no TestResults/<Guid>/<Guid>_Sequence.xml que captura a ordem dos testes que foram executados antes da falha.Também podes colecionar um crash ou hang dump, por /Blame:CollectDump;DumpType=full exemplo ou /Blame:CollectHangDump;TestTimeout=90m;HangDumpType=mini. Os interruptores equivalentes dotnet test são --blame-crash e --blame-hang.Para a matriz completa de opções e requisitos de dump-collection, veja o recolhedor de dados Blame. |
| /Diag:[nome do arquivo] | Grava logs de rastreamento de diagnóstico no arquivo especificado. Defina o nível de traço com /Diag:<file name>;tracelevel=<off\|error\|warning\|info\|verbose> (o padrão é verbose). |
| /ResultsDirectory:[caminho] | O diretório de resultados de teste será criado no caminho especificado, se não existir. Exemplo: /ResultsDirectory:<pathToResultsDirectory> |
| /ParentProcessId:[parentProcessId] | ID do processo do processo pai responsável pelo lançamento do processo atual. |
| /Port:[port] | A porta para conexão de soquete e recebimento das mensagens de evento. |
| /Recolher:[dataCollectorFriendlyName] | Habilita o coletor de dados para a execução de teste. Mais informações. |
| @[ficheiro] | Lê opções adicionais do ficheiro de resposta especificado. Os argumentos no ficheiro são separados por espaços em branco (espaços ou novas linhas) e é suportada a citação, pelo que as opções podem abranger várias linhas. Exemplo: vstest.console.exe @options.rsp |
Dica
As opções e valores não são diferenciados em maiúsculas e minúsculas.
Exemplos
A sintaxe para executar vstest.console.exe é:
vstest.console.exe [TestFileNames] [Options]
Por padrão, o comando retorna 0 quando sai 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 é executado vstest.console.exe para a biblioteca de teste myTestProject.dll:
vstest.console.exe myTestProject.dll
O comando a seguir é executado vstest.console.exe com vários arquivos de teste. Separe os nomes dos arquivos 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 só executa testes marcados como "Prioridade = 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 é executado 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 sendo executado no momento da falha.
Se não houver crash do host de teste, o ficheirosequence.xml não será gerado.
Exemplo de um ficheiro 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>
Neste caso, o <Test Name> último indicado é o teste que estava a decorrer no momento do crash.
Códigos de saída
vstest.console.exe devolve um de dois códigos de saída:
| Code | Meaning |
|---|---|
0 |
Êxito. A operação solicitada foi concluída e, para um teste, todos os testes executados foram aprovados. |
1 |
Fracasso. Por exemplo, um ou mais testes falharam, foi reportado um erro de execução, a linha de comandos estava inválida ou em falta, uma fonte de teste não pôde ser carregada, ou a execução foi abortada ou cancelada. |
O processo nunca retorna qualquer outro valor. Quando executas testes através dotnet testde , o SDK .NET revela um código de saída diferente de zero quando a execução falha da mesma forma.
Quando a descoberta não encontra testes correspondentes, o runner imprime um aviso em vez de um erro e, por defeito, ainda retorna 0. Para fazer uma execução que detecte ou selecione zero testes retornando 1 , defina <TreatNoTestsAsError>true</TreatNoTestsAsError> o elemento RunConfiguration do seu ficheiro .runsettings . Para mais informações, consulte Configurar testes unitários usando um ficheiro .runsettings.
Expressões do filtro de escape na casca
Uma expressão /TestCaseFilter é analisada tanto pelo teu shell como pela plataforma de teste, por isso alguns caracteres precisam de escape específico do shell antes devstest.console.exe os receber. Citar toda a expressão, como nos exemplos anteriores deste artigo, evita a maioria dos problemas. Os seguintes casos necessitam de cuidados adicionais:
PowerShell: A vírgula (
,) é o operador do array e o ponto e vírgula (;) é um separador de instruções. Cite toda a expressão do filtro para que seja passada literalmente, por/TestCaseFilter:"FullyQualifiedName=MyNamespace.MyClass.MyMethod"exemplo.Bash e zsh (Linux e macOS): Escape
!com uma barra inversa quando usa o!~operador (not contains), por exemplo--filter FullyQualifiedName\!~IntegrationTestscomdotnet test. Também cite valores que contenham caracteres com significado especial para a casca, como<,>, ou,numa lista genérica de argumentos de tipos:dotnet test --filter "FullyQualifiedName=MyNamespace.MyClass<Type1,Type2>.MyMethod"
Para a referência completa de filtragem e propriedades suportadas por framework de teste, veja filtro TestCase.
Exemplo de registo
Cada logger define os seus próprios parâmetros. Ao contrário do trx, o logger da consola permite definir o nível de verbosidade. Para informações adicionais, escreva VSTest.Console/? na linha de comandos.
Aqui está um exemplo para o logger de consola:
vstest.console.exe myTestFile.dll /logger:console;verbosity=detailed
Os níveis de verbosidade suportados incluem silencioso, mínimo, normal e detalhado.
No PowerShell, é necessário usar aspas:
vstest.console.exe myTestFile.dll /logger:"console;verbosity=detailed"
Para a lista completa dos loggers disponíveis, bem como instruções para criar o seu próprio logger, consulte Reportar resultados de testes 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 ambientais
A plataforma de testes reconhece várias variáveis do ambiente. Os seguintes são os mais úteis quando executas testes a partir da linha de comandos. Para a lista completa, veja Variáveis de ambiente compreendidas pela plataforma de teste no repositório vstest.
| Variable | Descrição |
|---|---|
VSTEST_CONNECTION_TIMEOUT |
Timeout, em segundos, para estabelecer ligações entre componentes da plataforma de teste (vstest.console.exe, testhost e recolhedor de dados). O padrão é 90. Aumente-o em máquinas lentas ou quando a latência da rede causar timeouts de ligação. |
VSTEST_DIAG |
Ativa o registo de diagnóstico e especifica o caminho para o ficheiro de registo. Equivalente à opção /Diag . |
VSTEST_DIAG_VERBOSITY |
Define a verbosidade do registo de diagnóstico quando VSTEST_DIAG está ativado. Os valores válidos são Verbose, Info, Warning, e Error (o padrão é Verbose). |
VSTEST_HOST_DEBUG |
Definir para qualquer valor não vazio para permitir a depuração do processo testhost. |
VSTEST_RUNNER_DEBUG |
Definido para qualquer valor não vazio para permitir a depuração do runner (vstest.console.exe). |
VSTEST_DUMP_PATH |
Sobrepõe o diretório padrão onde estão armazenados os crash dumps de culpa. |
VSTEST_DUMP_FORCEPROCDUMP |
Definir para qualquer valor não vazio para forçar o uso do ProcDump para a recolha de crash dump. |
VSTEST_DISABLE_UTF8_CONSOLE_ENCODING |
Defina para 1 desativar a codificação UTF-8 na saída da consola. |
VSTEST_CONSOLE_PATH |
Caminho para o vstest.console.exe executável usado pela aplicação de encaminhamento do dotnet test SDK .NET. Equivalente a -p:VSTestConsolePath quando corres dotnet test num projeto. |
Conteúdo relacionado
- Quickstart: executa testes a partir da linha de comandos no repositório vstest
- Configurar testes unitários usando um ficheiro .runsettings
- Crie um coletor de dados no repositório vstest
- Referência de comandos de teste dotnet