O método de teste é inconclusivo: o teste não foi executado. Erro?

172

Eu tenho uma classe de teste e abaixo eu publiquei um teste de amostra da classe de teste

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

Quando executo o projeto, recebo a seguinte tela insira a descrição da imagem aqui

Eu verifiquei as referências e o projeto de teste tem a referência ao projeto principal. Alguma idéia de por que o teste não está sendo executado ou está dizendo que eles eram inconclusivos?

Editar 1:

Vi uma postagem aqui e alterei a arquitetura do processador padrão da configuração do teste para X64, mas ainda não funciona.

Cybercop
fonte
3
É um problema conhecido no ReSharper. Existem algumas soluções em potencial aqui: stackoverflow.com/questions/12191352/… .
Chris Mantle
3
Você fez uma limpeza e reconstrução? Lembro-me de que há alguma estranheza no VS2010 com a perda de referências a montagens depois que você as atualiza e reconstrói.
Mark Walsh
@ChrisMantle eu verifiquei e mudou a minha arquitetura do processador padrão, mas ainda não funciona
Cybercop
@ MarkWalsh Estou usando o VS2012. Eu ainda limpo e reconstruída a solução como você disse, mas ainda não funciona
Cybercop
9
esta pergunta é discutida em meta
gnat

Respostas:

133

No caso de nenhuma das opções acima funcionar para alguém, eu corrigi minha instância desse erro ao observar uma entrada corrompida no meu App.Config devido a um pacote de nuget ausente no projeto de teste.

Chris Pacey
fonte
5
O mesmo problema aqui. Seria bom se o R # apresentasse um erro (erro ao inicializar o sistema de configuração), por isso seria óbvio porque os testes não foram executados.
Geoffrey Hudik 03/03
5
Obrigado, por eu colocar as configurações de aplicativos em cima das configurações por engano, movê-lo para uma posição adequada e funcionar.
AnIBMer
3
Adicionei specflow através do nuget e ele inseriu uma entrada no App.config. Isso criou todo o problema. Criei um novo App.config e adicionei a referência novamente e ela foi corrigida. Obrigado pela informação.
Vinee 21/10
Posso confirmar que, quase dois anos após a publicação inicial, essa ainda parece ser uma correção viável (estou usando o VS 2015 e o ReSharper 9.2).
Steven D.
2
Bingo! Obrigado Chris. No meu caso, era a seção log4net sem um nome de seção de usinagem <configSections>.
datps
47

Para mim, foi bastante frustrante, mas pelo menos encontrei a solução para o meu caso:

Se o seu TestMethod for assíncrono, não poderá ser anulado. DEVE retornar Tarefa.

Espero que ajude alguém :)

Krzysztof Skowronek
fonte
37

Eu tive o mesmo problema com o recarregador e corrigi esse erro alterando uma opção:

Re-afiador => Opções => Ferramentas => Teste de Unidade

Eu apenas tive que desmarcar a opção "Conjuntos de cópias de sombra sendo testadas"

Elias Platek
fonte
2
Isso resolveu o problema para mim, depois de analisar várias outras correções. Estou usando o VS 2013 e o R # v8.1 #
Spikeh
10
Não funcionou para mim, eu estou usando VS2015 w / reshaper 10.
Nemeas
Isso funcionou para mim, trabalhando com o VS2017 e o Resharper Ultimate 2017.2.2 em um projeto de teste do NETCore.
Tasker
Trabalhou para mim e não preciso limpar a compilação para os testes agora. Obrigado Elias.
PhoenixPan
22

Foi um problema do Resharper. Nas opções do Recarregador-> Ferramentas-> MSTEST, desmarquei o Use Legacy Runner e agora ele funciona.

Cybercop
fonte
61
Não tenho essa opção em Ferramentas-> Teste de unidade-> MsTest. (Resharper 9.2.)
cederlof
Também não tenho essa opção no R # 2017.2.
realsonic
Para mim, a opção foi desabilitar Ferramentas-> Teste de unidade-> MsTest e desmarcar a ajuda.
Marcel
15

Eu estava tendo esse problema, e acabou sendo o mesmo que esse problema aqui . Esta resposta resolveu o problema para mim .

  1. Desmarque a opção "Construir apenas projetos de inicialização e dependências na execução" (Opções -> Projetos e soluções -> Construir e executar)
  2. No Gerenciador de configurações, verifique se o projeto de inicialização e o projeto de teste estão com a opção "Compilar".

A segunda vez que encontrei esse problema, foi devido a um e comercial no caminho do arquivo para o projeto em que os testes residem. Funciona bem com o testador do ReSharper, mas não com o dotCover. Remova o e comercial do caminho do arquivo.

Este é um erro confirmado com dotCover.

Pato de borracha
fonte
1
Trabalhou para mim. VS2017 com ReSharper 2017/01/03 :-)
Lars Holdgaard
12

Para mim, basta limpar e reconstruir a solução.

Mike Chamberlain
fonte
Eu tinha (acidentalmente) revertido as alterações no arquivo do projeto ao alterar a ramificação no Git. Quando tentei executar o teste, clicando com o botão direito do mouse na classe (a janela de código ainda estava aberta), ela não foi executada, pois não fazia parte da solução.
mortb
12

Para mim, o problema era um arquivo XML de configurações do NUnit / ReSharper corrompido (devido a uma falta de energia inesperada).

Para identificar o erro, iniciei o Visual Studio com este comando :

devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose

O exame do arquivo revelou a seguinte exceção:

09:45:31.894 |W| UnitTestLaunch                | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.Load(String filename)
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   --- End of inner exception stack trace ---
   at NUnit.Engine.Internal.SettingsStore.LoadSettings()
   at NUnit.Engine.Services.SettingsService.StartService()
   at NUnit.Engine.Services.ServiceManager.StartServices()
   at NUnit.Engine.TestEngine.Initialize()
   at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
   at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)

Observe que este NÃO é o app.config do projeto de teste!

Uma rápida pesquisa ao redor identificou o seguinte arquivo como o culpado:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Existia, mas estava vazio. Excluir e reiniciar o Visual Studio resolveu o problema.

(Usando o Visual Studio Professional 2017 v15.3.5 e ReSharper 2017.2.1).

Reyhn
fonte
12

Eu enfrentei esse problema na atualização 3 vs 2017 com o Resharper Ultimate 2017.2

Reiniciar vs ou reiniciar a máquina não pode ajudar.

Resolvi o problema limpando o cache da seguinte maneira:

    Resharper ->options-> Environment ->click the button 'Clear caches'

Atualizar:

Há um botão "erro" (acho no Resharper 2018) no canto superior direito da janela de teste.

Se você clicar no botão de erro, ele exibirá uma mensagem de erro que pode ajudar na resolução do problema.

Para rastrear a raiz do problema, execute o Visual Studio no modo de log. Em vs 2017, execute o comando:

      devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose

Execute o teste.

Revise o arquivo de log test_log.txt e procure por 'error' no arquivo.

O arquivo de log é uma grande ajuda para encontrar o erro que você pode resolver ou pode enviar o problema com o arquivo de log para a equipe de suporte técnico do Resharper .

M.Hassan
fonte
7

Eu também corrigi esse problema. No entanto, nenhuma das soluções neste segmento funcionou. Aqui está o que eu fiz ...

Como o R # não estava fornecendo nenhum detalhe sobre por que as coisas estavam falhando, decidi experimentar o executor de teste integrado do VS2013. Ele teve exatamente o mesmo comportamento em que nenhum dos testes foi executado. No entanto, olhando na janela Saída, finalmente recebi uma mensagem de erro:

Ocorreu uma exceção ao chamar o executor 'executor: // mstestadapter / v1': referência de objeto não configurada para uma instância de um objeto.

Isso me levou a outro segmento no SO com uma solução. Acredite, eu nunca teria adivinhado qual era o problema.

Recentemente, fiz algumas alterações no arquivo AssemblyInfo.cs ao criar um pacote NuGet. Uma das alterações, incluindo a especificação de um valor de cultura de montagem de "en".

Eu mudei isso:

[assembly: AssemblyCulture("")] 

para isso:

[assembly: AssemblyCulture("en")]`. 

Foi isso! Foi o que inexplicavelmente interrompeu meus testes de unidade. Ainda não entendo o porquê. Mas pelo menos as coisas estão funcionando novamente. Depois de reverter essa alteração (ou seja, definir a cultura de volta para ""), meus testes começaram a ser executados novamente.

Espero que ajude alguém lá fora.

mikesigs
fonte
1
Mudei a cultura da montagem e o R # parou de executar os testes.
Valentine Zakharenko
obrigado! verificar a janela de saída revelou meu problema, a classe não era pública!
Jony Feldman
7

No meu caso, os [Test]métodos eram justos private. Vergonha

pkuderov
fonte
1
Estranho, o ReSharper apenas reclamou para mim que meus métodos de [Teste] eram privados. Deve ser um novo recurso.
Kevin B Burns,
7

Meu problema era que eu havia instalado apenas o NUnit com nuget. Eu não tinha instalado o NUnit3TestAdapter, o que também era necessário.

Install-Package NUnit3TestAdapter
Mike Olund
fonte
Esse é um daqueles problemas frustrantes que lhe dão poucas pistas sobre o problema real!
Ben Power
6

No meu caso, foi um erro que cometi ao copiar a string de conexão no app.config .. Eu a coloquei dentro da tag configSections!

Demorei um pouco para perceber que ... graças ao VS intellisense ... ou foi mais uma vez?

Kcats Wolfrevo
fonte
no meu caso, foi resultado de alteração inválida no arquivo de configuração
evgenyl
Meu problema foi causado por uma resolução de conflitos Git ruim deixando Chefe informações mudança no meu arquivo de configuração resolvido
KiwiSunGoddess
Quase o mesmo aconteceu comigo, eu adicionei uma string de conexão a uma seção appSettings redundante, quando removi a seção appSettings redundante e movi a string de conexão para o appSettings original em que funcionava.
Sirar Salih
A resposta sobre app.config corrompido é o mesmo que primeiro stackoverflow.com/a/21386881/52277
Michael Freidgeim
5

Eu tive um problema semelhante. VS 2010, c # CLR 2 Nunit 2.5.7, basta criar> solução limpa do VS ajudou a resolver esse problema

Abdul Jabbar
fonte
5

No meu caso, criei um método de teste assíncrono que retornou void. Retornar em Taskvez de voidresolver o problema.

Neshta
fonte
4

Você adicionou alguma dependência de DLL recentemente? ... Como eu

Acabei de encontrar o mesmo problema e foi muito exasperante não ter nenhuma pista na janela de resultados do teste ou em qualquer outro local prático.

A causa foi extremamente estúpida: acabei de adicionar o dia anterior à dependência a uma DLL externa adicional em um subprojeto, e o projeto principal App de fato foi criado e executado corretamente após a alteração. Mas meus testes de unidade estão em um projeto irmão do aplicativo principal e, portanto, também dependiam desse subprojeto alterado, onde a DLL foi invocada ... mas o local de tempo de execução do projeto de teste não é o do aplicativo principal! A alteração da compilação para fazer a cópia da DLL ausente no diretório de tempo de execução de teste corrigiu o problema.

berhauz
fonte
4

Estou usando o VS2013, ReSharper 9.1 com extensão MSpec do ReSharper e Moq. Eu experimentei o mesmo erro "inconclusivo".

Acabou que o meu Mock's do Moq não foi inicializado, apenas declarado. Uns inicializaram todos os testes executados novamente.

Espen Ekvang
fonte
4

No meu caso, recebi esse erro por causa do modo 'Release', onde a compilação do projeto UnitTests foi simplesmente desativada. Voltando ao modo 'Debug', foi corrigido.

É realmente surpreendente que o ReSharper não possa dizer nada, caso não encontre a biblioteca UnitTests. Sério, é uma pena;)

Espero que ajude alguém

RR-Fireball
fonte
4

No meu caso, todos testes em alguns projetos de teste em uma solução começaram a não ser executados depois que adicionei novos projetos. Usando o VS 2017 com ReSharper 2017.1.2 aqui.

Primeiro, verifique se você não está perdendo tempo, supondo que seu problema esteja relacionado ao ReSharper. É fácil assumir que há algo errado com o ReSharper se você usar seus recursos de teste de unidade, incluindo o Unit Test Explorer . Abra o Gerenciador de Testes do Visual Studio no menu Teste e tente Executar Tudo ". A vantagem adicional de fazer isso é que a janela de saída mostrará uma mensagem de erro que pode indicar a direção certa. Se você perceber que o mesmo conjunto de teste não são executados, é seguro assumir que o problema está no Visual Studio e não no ReSharper.

Acabei excluindo e adicionando novamente uma da plataforma de solução ativa , Any CPU , no Configuration Manager . Ao fazer isso, depois de salvar minhas alterações e reabrir a solução, todos os testes começaram a ser executados novamente.

Acredito que houve uma entrada de configuração inesperada no arquivo de solução quando adicionei novos projetos e, ao recriar uma das plataformas, ela se corrigiu. Tentei diferenciar, mas era difícil dizer o que havia mudado para causar o problema.

Wonster
fonte
No meu caso, tive um erro de digitação bobo no app.config <AppConfig> em vez de <AppSettings>. Eu amo o ReSharper, mas eles REALMENTE precisam trabalhar em suas mensagens de erro!
MichaelMilom
4

Para aqueles que estão enfrentando esse problema no meu projeto de teste .NET Core 2.0no Visual Studio 2017 Community (v15.3 3). Eu também tive esse bug usando JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- existe um bug que eu publiquei.

A JetBrains recomendou a criação de um novo projeto de teste do zero para reproduzi-lo. Quando fiz isso e os testes funcionaram bem, encontrei o motivo que causou o problema:

  • Remova isso do seu *.csprojarquivo:
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

Quando fiz isso - os testes começaram a funcionar bem.

Dmitry Pavlov
fonte
Dmitry, obrigado, isso me ajudou. Você pode explicar o que é esse serviço?
Vladimir Melekh
@VladimirMelekh verificar isso github.com/Microsoft/vstest/issues/472
Dmitry Pavlov
3

Estou usando o VS2010, NUnit 2.6.3 (embora o ReSharper internamente diga que está usando o 2.6.2?), O ReSharper 7.7.1 e o NCrunch 2.5.0.12 e estava executando a mesma coisa "... teste é inconclusivo ..." com o NUnit, mas o NCrunch disse que estava tudo bem. Durante a maior parte dos dias, o NUnit e o NCrunch estavam em sincronia concordando sobre quais testes eram felizes e quais precisavam de refatoração; então, aconteceu algo que eu ainda não entendi; passou), então decidiu que estavam todos trabalhando, e o NUnit começou a reclamar de todos os meus testes, exceto um com a mesma mensagem "..test é inconclusivo ...", que eu pude novamente passar para um passo mesmo que o NUnit continuasse para mostrar como "inconclusivo").

Tentei várias das sugestões acima sem sucesso e, finalmente, fechei o VS2010 e reabri a solução. Agora, todos os meus testes estão felizes novamente, e a NCrunch e a NUnit estão relatando os mesmos resultados novamente. Infelizmente, não tenho idéia do que mudou para fazer com que fiquem fora de sincronia, mas fechar e reabrir o VS2010 parece ter corrigido.

Talvez alguém se depare com isso e consiga usar essa solução simples (se bem que insatisfatória, pois você não sabe qual é a solução real).

delliottg
fonte
3

Eu tive esse mesmo problema. O culpado era uma referência externa não compatível com as configurações de construção do meu projeto. Para resolver, cliquei com o botão direito do mouse em projeto-> propriedades-> construção-> destino da plataforma-> alterar de Qualquer CPU para x86.

O particular * .dll com o qual eu estava trabalhando era System.Data.SQLite. Esse * .dll específico é codificado permanentemente para operação em 32 bits. A configuração "Qualquer CPU" tentou carregá-lo como 64 bits.

sapbucket
fonte
A incompatibilidade de destino da plataforma também pode acontecer com referências a outros projetos dentro da mesma solução.
Chaquotay 12/01
3

Minha solução:

O NUnit 3.2.0 tem alguns problemas com o Resharper - faça o downgrade para 2.6.4:

update-package nunit -version 2.6.4
David McEleney
fonte
3

No meu caso, meu método de teste era privado, mudei para público e funcionou.

Andrew Burns
fonte
3

Causada pelo arquivo App.Config ausente (não corrompido). A adição de um novo (Adicionar -> Novo Item ... -> Arquivo de Configuração do Aplicativo) o corrigiu.

AnotherFineMess
fonte
3

Eu estava com o mesmo problema: estava relacionado à versão de compatibilidade entre o NUnit 3.5 e o Resharper 9.2, uma vez que foi resolvido com o downgrade do NUnit 3.5 para o 2.6.4. Funcionou para mim. boa sorte.

Ali Golgol
fonte
Eu tinha um assembly de teste compilado em relação ao 3.6.1 e meu assembly principal de teste foi compilado em 3.7.1. Rebaixado para 3.6.1 e agora está tudo de bom.
Tom
Foi o caso do ReSharper 2017.3.2 e do NUnit 3.11. Veja comentário a nunit github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato
3

Se você estiver usando xUnit, resolvi o problema ao instalar o xunit.running.visualstudiopacote. (atualmente usando xUnit 2.3.1e VS17 Enterprise 15.3.5)

Alessio Di Salvo
fonte
3

Estou com o mesmo problema para executar qualquer teste usando a estrutura NUnit. "Inconclusivo: teste não executado" Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

RESOLVIDO Adicionando dependência de projeto ao Microsoft.NET.Test.Sdk

Julio Cesar
fonte
Não ajudou no meu caso #
687 Dmitry Avtonomov
2

Para quem está com pressa de executar o teste, tive que usar o VS 2017 test explorer para executar testes;

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Teoman shipahi
fonte
2

Este erro ocorreu no Visual Studio 2017 e na nova versão 2018.2.3, mas a correção se aplica às versões do Visual Studio 2019 para.

A correção, para que os testes funcionassem no Resharper, era simplesmente atualizar para a versão mais recente do Resharper (2019.2.1) no momento da redação.

Boris
fonte
1

Eu tive exatamente o mesmo problema e nada ajudou.

eventualmente, vi que havia uma incompatibilidade nos meus namespaces do projeto de unidade e do projeto de teste de unidade.

O espaço para nome do meu projeto de unidade é unit.project e o projeto de teste foi nomeado unit.project.tests, mas o espaço para nome padrão do teste era o mesmo que a unidade, ambos eram unit.project.

Depois de atualizar os namespaces para serem diferentes (um namespace para cada projeto), tudo funcionou!

prata
fonte
Sim, eu tive o mesmo problema. A idéia pode ser tornar o projeto de testes e o projeto de destino idênticos para facilitar o acesso, mas ele se ataca com o executor de testes e produz esse problema a partir do OP.
atconway