Testes não executados no Gerenciador de Testes


146

Atualmente, estou trabalhando em uma solução que possui 32 Unittests. Eu tenho trabalhado com o executor de teste do recarregador - que funciona bem. Todos os testes estão sendo executados, todos estão mostrando o resultado correto. Agora, um colega de trabalho me disse que os testes não estão sendo executados em sua máquina usando o explorador de testes do Visual Studio. Eles não estão funcionando na minha máquina, portanto, posso excluir alguns arquivos ausentes locais ou algo assim.

O Gerenciador de Testes está mostrando todos os testes de unidade, mas, ao clicar em "Executar Tudo", todos os testes ficam acinzentados e não mostram resultado da execução do teste:

insira a descrição da imagem aqui

  • Todas as classes de teste são públicas
  • Todas as classes de teste estão tendo o [TestClass]atributo declarado
  • Todos os métodos de teste estão usando o [TestMethod]atributo
  • O código de produtividade e os projetos de teste estão direcionados ao .NET 3.5.
  • Eu já tentei a compilação limpa a minha solução, e / ou apagar todos obj, bin, Debuge Releasepastas

Aprecio todas as dicas que possam causar esse tipo de comportamento.


3
Atualize seu ReSharper. Consulte este stackoverflow.com/questions/16011775/…
kmhigashioka 14/15

18
Não seria maravilhoso se o VS dissesse por que um teste não foi executado? Plataforma de destino incompatível, adaptador de teste ausente, ... :(
Bernhard Hofmann

1
Onde é mencionado que eles usam o ReSharper?
Alex 75

5
@BernhardHofmann Encontrei um problema como esse agora e acontece que o VS estava emitindo algumas mensagens de erro em Saída> Testes. Importante. Frustrante que o VS não os torne mais visíveis, mas esse é um lugar para se olhar em uma situação como essa.
JLRishe 4/03

2
Todos vocês podem estar interessados ​​em aprovar esta solicitação de recurso: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney

Respostas:


157

Se seus projetos não são todos AnyCpu, você também pode verificar se as 2 configurações a seguir correspondem:

  1. [Clique com o botão direito do mouse no projeto de teste] -> propriedades -> Construção -> Destino da plataforma - por exemplo, x64

  2. [Menu principal] -> Teste -> Configurações de teste -> Arquitetura padrão do processador -> X64

Descobri que quando isso não correspondesse, meu projeto de teste falharia silenciosamente na execução.


5
esta resposta é "pescoço e pescoço" com "ligue e desligue novamente"; portanto, se isso funcionar para você, faça um voto positivo.
Lukkea

este fixo meus problemas (mudança de plataformas mistas para anycpu)
Marcel Studer

1
verifique se seus projetos de teste não são netstandard2.0, mas netcoreapp2.2
#

4
Trabalhou. Eu realmente com o VS nos enviaria um aviso claro ou uma mensagem de erro ou algo assim.
anon

9
Versão do VS2019: Menu principal -> Teste -> Arquitetura do processador para projetos de AnyCPU -> X64.
StackOverthrow

64

Eu tive o mesmo problema no VS 2017. No meu caso, ele foi resolvido reiniciando o VS.


7
meu comentário anterior sobre o motivo pelo qual dei esse voto negativo foi excluído, por isso vou ficar um pouco mais claro. Esta não é uma solução para o problema; é uma correção muito temporária que não resolve o problema subjacente. Eu não acho que o SO deva ser um lugar para as pessoas receberem o aviso de "desligue e ligue novamente", que é um conhecimento a ser aprendido muito antes de você chegar aqui. Por favor, veja a resposta de Joseph Simpson para uma solução.
Lukkea

5
@lukkea Segui a resposta de Joseph Simpson e confirmei que todos os meus projetos eram AnyCpu. Eu ainda tinha o problema descrito aqui. Para mim, simplesmente reiniciar o VS ajudou. Essa não é a primeira vez que o VS2012 tem esse tipo de hickups (e não apenas na minha máquina). Concordo com você, que esta não é uma boa solução, mas se não houver nada de errado com o projeto, essa poderá ser a única ajuda. Deve-se verificar se a limpeza de uma reconstrução também não ajuda.
Sascha

2
Se apenas "ligá-lo e desligá-lo novamente" resolveria todos os meus problemas. Ainda é surpreendente o quanto ele conserta. É um pouco embaraçoso que eu precisei ir ao stackoverflow para ser lembrado de fazê-lo, mas achei esta resposta útil.
Richard Garside

2
@lukka às vezes o visual studio é o problema subjacente e a reinicialização é a solução
JSON

1
Ainda funciona para o VS2019 ....
Tronald 29/06

44

Se você estiver usando NUnit em vez de MSTest então você vai precisar do NUnit teste Adaptador de extensão para o Visual Studio 2012/2013.


9
Isso me ajudou a descobrir que eu precisava instalar o "NUnit 3 Test Adapter": marketplace.visualstudio.com/…
Westerlund.io

10
No VS 2019, trabalhei para mim instalar o adaptador a partir do gerenciador de pacotes nuget.org/packages/NUnit3TestAdapter
maylon

De acordo com esta página, você também precisa instalar o Microsoft.NET.Test.SdkNuget
BlueRaja - Danny Pflughoeft

No VS 2017, instalei o Extension Nunit 3 Test Adapter e funcionou.
Bob Lokerse

No VS 2019, eu também instalei o Extension Nunit 3 Test Adapter e funcionou. Uma observação: eu também precisava atualizar o Visual Studio.
Bob Lokerse

42

Eu tive que alterar meus métodos de teste assíncrono para retornar a tarefa em vez de anular.

Os testes foram então ativos e executáveis ​​no Test Explorer.


1
Não há como esperar que um método de vácuo assíncrono seja concluído. O vácuo assíncrono é "atire e esqueça". É por isso que eles não podem ser testados.
Ketobomb

O facepalming que fiz quando li isso ecoou pela terra ... Obrigado por apontar minha estupidez. Isso funcionou para mim. Promovido
JP Chapleau

Embora arquivado na categoria "no duh". Eu gostaria que isso pudesse ser votado mais, pois é super óbvio que seu tipo de retorno deve ser uma tarefa, mas fácil de esquecer (porque aparentemente nenhum outro teste de unidade no mundo retorna nada além de vazio) e envia você pelo buraco do coelho para consertar sua unidade teste a configuração quando não houver nenhum problema real de configuração. Realmente gostaria que isso causasse apenas um compilador ou, pelo menos, gera um erro de tempo de execução.
pat8719 14/06

2
@ pat8719, parece uma boa ideia para um analisador de código. Eles não são muito difíceis de escrever. Acabei de escrever um fato de xunidade async void Foo()e seus analisadores não reclamaram, mas eles certamente poderiam adicionar um que sim. cc: @bradwilson
benmccallum

22

Verifique em qual estrutura os testes foram escritos (por exemplo, nunit, xunit, VS test, etc.) e verifique se você possui a extensão correta do adaptador / corredor de teste instalada.

Para mim, estava faltando o Adaptador de Teste do NUnit 3 e confirmei o número da versão exigida examinando a versão da dependência nunit.framework (selecione a .dll na árvore Dependencies do Solution Explorer e pressione F4 para abrir a janela Propriedades).


2
Nota para si próprio: Meu projeto original do MSTest está em Microsoft.VisualStudio.QualityTools.UnitTestFrameworkdúvida (qual versão). Problemas resolvidos em que o método não é executado (ou encontrado) removendo essa referência e instalando o MSTest.TestAdapter (e o Framework) mais recente (v2.1.0) (
Adam

@AdamCox está Microsoft.VisualStudio.TestTools.UnitTestingobsoleto? Eu tive alguns testes usando isso que de repente pararam de executar como acima, depois de adicionar novamente algumas referências a um projeto do qual eles dependiam.
ebyrob 7/04

@ebyrob, a resposta de Athanasios abaixo pode ser relevante. Parece que ele não apenas teve que atualizar / atualizar para os pacotes MSTest. *, Mas também adicionar algumas dependências e corrigir alguns redirecionamentos de ligação. Verifique sua saída de avisos.
benmccallum

16

TLDR: atualize os pacotes de teste, verifique a saída -> console de teste

Eu lutei com isso por um dia e meio. então aqui está o que eu fiz para resolvê-lo:

Sintomas

  1. 5 projetos de teste de unidade, todos detectáveis ​​no TestExplorer
  2. 2 de 5 executados corretamente
  3. 3 afirmando que não é executado
  4. O problema começou após uma atualização da estrutura .net

Investigação

Como todos os pacotes foram atualizados durante a atualização da estrutura .net, comecei com as diferenças entre os projetos em execução e os que não estão em funcionamento. A primeira pista foi que todos os três projetos estavam usando: MSTest.TestAdapter e MSTest.TestFramework

Naturalmente, fui ao menu suspenso -> Console de saída -> Teste no VS 2019 e observei a saída. Nada útil lá.

Etapa 1 da solução : Atualize o MSTest.TestAdapter e MSTest.TestFramework para a versão 2.0.0

Etapa 2 da solução : Agora o console de saída -> Saída suspensa de teste começou a mostrar um após o outro, pacotes ausentes e redirecionamentos de ligação incorretos

Etapa três da solução : Adicione manualmente os pacotes ausentes. Para mim, aqueles eram

  1. System.Runtime.Extentions
  2. System.Reflection
  3. Talvez um pouco mais que eu esteja perdendo

Etapa 4 da solução : Removidos / corrigidos os redirecionamentos de ligação desnecessários.

Espero que isso ajude outra pessoa.


Você me salvou naquele dia e meio! Atualizei um projeto de versão 4.5 FW e tentei remover todos os itens desnecessários dos pacotes e acabei nessa situação. Obrigado!
Numan

Eu acho que estava experimentando algo semelhante. Eventualmente, eu apenas recriei o projeto do zero. Aparentemente, há uma linha no arquivo * .csproj que configura ToolsVersione esbarrar na mina estragou tudo. Tudo o que posso dizer é "cuidado com o comprador" para os testes de unidade da MS e esteja pronto para substituir seus arquivos * .csproj a qualquer momento, essas coisas estão totalmente integradas e dependem muito da versão.
ebyrob 9/04

Obrigado, embora não seja diretamente meu problema, a dica para verificar a saída do console me mostrou o erro (o método DBContext Dispose tinha um erro) que estava impedindo a execução dos meus testes.
Iain Carlin


11

Teve o mesmo problema após a instalação limpa do VS 2019. Os testes foram encontrados, mas não executados com "Ocorreu um erro inesperado". Corrigido configurando x64 em vez de x86, que foi selecionado por padrão.

insira a descrição da imagem aqui


4
Essa foi a correção para mim, além de reiniciar o VS e excluir a pasta .vs. Obrigado.
Donald.Record

Não acredito que isso ainda seja um problema ... Felizmente, a Microsoft produziu algum tipo de aviso para esse obstáculo clássico em um ponto.
Guillaume LaHaye

10

Eu descobri que no projeto não estava fazendo referência ao assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework . Em vez disso, fazia referência a Microsoft.VisualStudio.TestPlatform.TestFramework e Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions . Quando removi essas duas referências e adicionei a referência ao assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework , os testes que foram marcados anteriormente com o ponto de exclamação azul de repente se tornaram ativos e começaram a funcionar.

Os testes de unidade não são executados com montagem incorreta

Com a montagem correta, os testes são executados


3
Depois de mudar do .NET Framework 4.6.2 para o .NET Framework 4.7.2, meus testes não estavam mais em execução. Depois de horas tentando, apenas essa solução funcionou para mim.
Éric Bergeron

Depois de mudar do .NET Framework 4.6.2 para o .NET Framework 4.7.2 - tive que excluir todos os redirecionamentos de ligação no app.config
bkwdesign

10

Eu tive esse problema e, para mim, foi causado por vários projetos de teste com diferentes versões de:

  • MSTest.TestAdapter
  • MSTest.TestFramework

A consolidação dos pacotes de pepitas para os projetos, para que eles fossem iguais, resolveu o problema para mim.


1
Essa resposta me ajudou a encontrar uma causa semelhante. No meu caso, alguns projetos de teste tinham referências ao Microsoft.VisualStudio.TestPlatform.TestFramework (e não foram executados) enquanto outros tiveram referências ao Microsoft.VisualStudio.QualaityTools.UnitTestFramework (que eram os projetos que seriam executados).
jr

8

No meu caso, foi porque um projeto de teste em minha solução tinha os pacotes de nuget MSTest.TestFramework e MSTest.TestAdapter instalados, mas os outros não. Aparentemente, esses pacotes não eram necessários para executar testes até que um projeto na solução os tivesse instalado.

O problema foi corrigido com a instalação desses pacotes em projetos de teste ausentes.


No meu caso, é exatamente o oposto: qualquer projeto de teste de unidade que possua os pacotes de nuget do MSTest não será executado, onde os outros. Estranho.
Palle Data

Resolvido : eu tenho um arquivo .testsettings. Pacotes MSTest requerem um arquivo .runsettings. É por isso que os testes não estão sendo executados.
Palle Data

7

O que o corrigiu para mim foi a atualização dos pacotes de nuget do MS.Test


7

Instalar o Nunit3TestAdapterNuget resolveu este problema


isso corrigiu meu problema também! :)
Eru

6

insira a descrição da imagem aqui

A configuração da arquitetura do processador para projetos AnyCPU no Test Explorer corrigiu meu problema! Veja a captura de tela acima.


Muito obrigado! Isso me ajudou =)
Alexander Brattsev

4

No meu caso, eu tive um async voidmétodo e substituí por async Task, portanto, o teste é executado como eu esperava:

    [TestMethod]
    public async  void SendTest(){}

substituir com :

    [TestMethod]
    public async  Task SendTest(){}

1
Este foi o meu problema
Kyle Delaney

3

Eu tive os mesmos sintomas.

Verifique se você possui a extensão apropriada do Visual Studio instalada em Ferramentas - Extensões e atualizações. No meu caso, tive que instalar o XUnit e o Specflow a partir da opção Online.

Em seguida, limpe a solução e reconstrua-a.

Se isso ainda não ajudar, limpe seu diretório temporário (pesquise% temp% no menu Iniciar e exclua todo o conteúdo em Temp)

E, finalmente, tente desinstalar o Resharper, que finalmente corrigiu o meu problema.


4
Desinstalar Resharper ?! Eu não acho que esta é uma solução ^^
Steve Rakebrandt

2

Aqui estava o projeto de teste não foi marcado para ser construído:

Build -> Configuration Manager ... -> verifique a build do seu projeto de teste


2

Desde que cheguei aqui com esse tipo de erro, posto meu problema / solução:

Sintomas:

  • Nem todos os testes estão sendo executados, mas eles não dependem do projeto, apenas alguns deles foram executados.
  • Todos os executados eram verdes.
  • Pilha de tecnologia: dotnet core / XUnit / FluentAssertions
  • Todos os testes detectados e atualizados se forem alterados.
  • Ao selecionar ou executar "Testes não executados" várias vezes, eles podem ser executados.

Problema:

Houve um erro no código que lança uma exceção dentro de outro segmento. Todas as asserções de teste foram aprovadas, mas cancelaram a execução do teste. Eu pude ver o erro na "Saída de testes" (NullException).


+1 Tentei depurar um teste específico. Quando finalmente fiz outro teste mais simples, pude depurar o teste específico. Essa resposta me levou a tentar isso.
Halvard

2

Teve os mesmos sintomas, no meu caso, foi a versão do SDK do dotnet core que foi o problema.

Os projetos tinham como alvo o 2.2 e puderam construir usando o 3.0. Depois de instalar a versão mais recente do SDK 2.2, eles puderam executar.


2

Você pode visualizar a saída de erro do seu executor de teste, abrindo o painel Saída (exibição -> saída) e escolhendo "testes" no menu suspenso "Mostrar saída de"

mostra a saída de


Além disso, se você tiver o Resharper instalado, poderá abrir um arquivo de teste e passar o mouse sobre o círculo de teste ao lado de um teste para obter informações adicionais sobre erros

Saída de afiação

Clicar nesse botão levará você a uma janela com informações mais detalhadas. Como alternativa, você pode abrir essa janela acessando Extensões -> Remodelador -> Windows -> Resultados da Exploração de Teste de Unidade

Exploração de Teste de Unidade de Re-afiador


2

Tentei muitas opções com o Visual Studio 2019 Versão 16.4.6 e Microsoft.VisualStudio.TestTools.UnitTesting, por enquanto, a única maneira de executar testes com êxito era invocando o próximo comando no console

dotnet test

Os testes são descobertos no Gerenciador de Testes, mas o resultado é "Não Executar".

A atualização do Visual Studio não ajudou.

Resolva o problema com "Nenhum teste corresponde ao filtro de caixa de teste fornecido FullyQualifiedName" executando atualizações da versão mais recente para os próximos pacotes:

Microsoft.NET.Test.Sdk
MSTest.TestAdapter
MSTest.TestFramework

1

Para mim, a solução foi alterar as configurações de Teste da unidade de recarregador "Arquitetura da plataforma padrão" para "x64"

insira a descrição da imagem aqui


Isso resolveu meu problema com um projeto do .NET Core 3.1 que se recusava a executar testes no Test Explorer. Nada mais poderia consertar isso, além disso.
J_L

1

Para mim, reiniciar o VS2017 não funcionou. Eu tive que limpar o sln e, em seguida, encontrei um arquivo com testes que não eram executados e apenas executavam esse arquivo. Depois disso eu corri tudo e funcionou normal novamente.


1

Eu tinha uma versão diferente dos pacotes de nuget NUnit (3.11.0) e NunitTestAdapter (3.12.0). Quando atualizei o NUnit para a 3.12.0, o Visual Studio executou testes.


1

No meu caso, ele trabalhou para atualizar os pacotes de nuget do MSTest. Pode reproduzir esse problema mesmo no projeto MSTest em branco e atualizar os pacotes funcionados.


1

Para mim, ter uma propriedade chamada TestContext em uma classe base estava causando esse comportamento. Por exemplo:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

1

Posso dizer pelos seus atributos que você está usando o MSTest. Eu tive um problema semelhante: meus testes estavam aparecendo no Gerenciador de Testes, mas quando eu tentava executá-los (escolhendo Executar Tudo ou selecionando-os individualmente), eles não o faziam.

Meu problema foi que eu criei o projeto de teste de unidade manualmente a partir de um projeto vazio da Biblioteca de Classes .NET Standard. Eu havia instalado o MSTest.TestFrameworkpacote NuGet, mas não o MSTest.TestAdapterpacote. Assim que eu instalei o pacote do adaptador, eles foram executados conforme o esperado.

Parece óbvio em retrospecto, mas quando você cria projetos de teste de unidade a partir de um modelo, toma essas coisas como garantidas.


1

Vale ressaltar que algumas vezes os arquivos do NUnit Test Adapter são corrompidos na pasta do usuário C: \ Usuários [Usuário] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll no Windows 10 e isso faz com que o Test Explorer pare de funcionar como deveria.


1

Eu uso o VS2019 com o .Net 4.7. Instalei a extensão NUnit v3 e alterei as configurações de teste para usar o X64. Meu projeto de teste de unidade é Qualquer CPU (funcionaria se eu o alterasse para x64). Agora eu posso depurar através do meu código.


1

Esse problema também é observado quando o método de teste que está sendo executado lança uma StackOverflowException , fazendo com que o executor de teste aborte a execução de teste, resultando na saída 0 tests run.

Para encontrar o culpado e resolvê-lo colocar um break point no início de ambos TestInitialize e TestMethod decorado métodos, execute o teste de unidade no modo de depuração, proceda passando por cima (F10) até que a exceção é lançada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.