Il metodo di prova non è conclusivo: il test non è stato eseguito. Errore?


172

Ho una classe di test e di seguito ho pubblicato un test di esempio dalla classe di test

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 eseguo il progetto ottengo la seguente schermata inserisci qui la descrizione dell'immagine

Ho controllato i riferimenti e il progetto di test ha il riferimento al progetto principale. Qualche idea sul perché il test non sia in esecuzione o affermi che erano inconcludenti?

Modifica 1:

Ho visto un post qui e ho cambiato l'architettura del processore predefinita del mio test su X64 ma non funziona ancora.


3
È un problema noto in ReSharper. Ci sono alcune potenziali soluzioni qui: stackoverflow.com/questions/12191352/… .
Chris Mantle,

3
Hai fatto una pulizia e ricostruzione? Ricordo che c'è qualcosa di strano in VS2010 con la perdita di riferimenti agli assiemi dopo averli aggiornati e ricostruiti.
Mark Walsh

@ChrisMantle L'ho verificato e ho modificato l'architettura del processore predefinita, ma non funziona ancora
Cybercop

@MarkWalsh Sto usando VS2012. Ho ancora pulito e ricostruito la soluzione come hai detto, ma non funziona ancora
Cybercop il

9
questa domanda è discussa a meta
gnat

Risposte:


133

Nel caso in cui nessuna delle opzioni di cui sopra funzionasse per nessuno, ho corretto la mia istanza di questo errore notando una voce danneggiata nella mia App.Config a causa di un pacchetto nuget mancante nel progetto di test.


5
Lo stesso problema qui. Sarebbe bello se R # eliminasse l'errore (errore durante l'inizializzazione del sistema di configurazione), quindi sarebbe ovvio il motivo per cui i test non sono stati eseguiti.
Geoffrey Hudik,

5
Grazie, per me, ho inserito le app in cima alle configurazioni per errore, le ho spostate in una posizione corretta e funziona.
ANIBMer

3
Ho aggiunto specflow tramite nuget e ha inserito una voce in App.config. Ciò ha creato l'intero problema. Ho creato un nuovo App.config e aggiunto di nuovo il riferimento e il problema è stato risolto. Grazie per l'informazione.
Vinee,

Posso confermare che quasi due anni dopo che questo post è stato inizialmente pubblicato, questa sembra ancora essere una soluzione praticabile (sto usando VS 2015 e ReSharper 9.2).
Steven D.

2
Bingo! Grazie Chris. Nel mio caso era la sezione log4net senza un nome di sezione maching in <configSections>.
datps

47

Per me è stato piuttosto frustrante, ma ho trovato almeno una soluzione per il mio caso:

Se TestMethod è asincrono, non può essere nullo. DEVE restituire Task.

Spero che aiuti qualcuno :)


37

Ho avuto lo stesso problema con il resharper e ho corretto questo errore modificando un'opzione:

Resharper => Opzioni => Strumenti => Test unità

Ho solo dovuto deselezionare l'opzione "Assiemi copia shadow in fase di test"


2
Questo ha risolto il problema per me, dopo aver visto un sacco di altre correzioni. Sto usando VS 2013 e R # v8.1
Spikeh il

10
Non ha funzionato per me, sto usando VS2015 con Reshaper 10.
Nemeas

Questo mi ha permesso di lavorare con VS2017 e Resharper Ultimate 2017.2.2 su un progetto di test NETCore.
Tasker,

Ha funzionato per me e non devo cancellare la build per i test ora. Grazie Elias.
PhoenixPan

22

Era un problema di Resharper. Nelle opzioni di Resharper-> Strumenti-> MSTEST, ho deselezionato Usa Legacy Runner e ora funziona.


61
Non ho questa opzione in Strumenti-> Test unitario-> MsTest. (Resharper 9.2.)
cederlof,

Inoltre non ho tale opzione in R # 2017.2.
realsonic,

Per me l'opzione era unter Strumenti-> Test unitario-> MsTest e deselezionando aiutato.
Marcel,

15

Stavo avendo questo problema, e si è rivelato essere lo stesso di questo problema qui . Questa risposta ha risolto il problema per me .

  1. Deseleziona "Crea solo progetti di avvio e dipendenze in esecuzione" (Opzioni -> Progetti e soluzioni -> Crea ed esegui)
  2. In Configuration Manager, assicurati che sia il progetto di avvio che il progetto Test abbiano "Build" selezionato.

La seconda volta che ho riscontrato questo problema, è stato dovuto a una e commerciale nel percorso del file del progetto in cui risiedono i test. Funziona bene con il test runner di ReSharper, ma non con quello di dotCover. Rimuovere la e commerciale dal percorso del file.

Questo è un bug confermato con dotCover.


1
Ha funzionato per me. VS2017 con ReSharper 2017.1.3 :-)
Lars Holdgaard

12

Per me, semplicemente la pulizia e la ricostruzione della soluzione l'hanno risolta.


Avevo (accidentalmente) ripristinato le modifiche al file di progetto quando ho cambiato ramo in Git. Quando ho provato a eseguire il test facendo clic con il pulsante destro del mouse sulla classe (la finestra del codice era ancora aperta) non funzionava poiché non faceva parte della soluzione.
mortaio il

12

Per me, il problema era un file XML delle impostazioni NUnit / ReSharper corrotto (a causa di una mancanza di alimentazione imprevista).

Per identificare l'errore ho avviato Visual Studio con questo comando :

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

L'esame del file ha rivelato la seguente eccezione:

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)

Si noti che questo NON è è app.config del progetto di test!

Una rapida ricerca su Google ha identificato il seguente file come colpevole:

%LOCALAPPDATA%\NUnit\Nunit30Settings.xml

Esisteva, ma era vuoto. L'eliminazione e il riavvio di Visual Studio hanno risolto il problema.

(Utilizzo di Visual Studio Professional 2017 v15.3.5 e ReSharper 2017.2.1).


12

Ho riscontrato questo problema nell'aggiornamento 3 vs 2017 con Resharper Ultimate 2017.2

Il riavvio o il riavvio della macchina non possono essere d'aiuto.

Ho risolto il problema cancellando la cache come segue:

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

Aggiornare:

C'è un pulsante "errore" (lo trovo in Resharper 2018) nell'angolo in alto a destra della finestra del test.

Se si fa clic sul pulsante di errore, viene visualizzato un messaggio di errore che può aiutare a risolvere il problema.

Per tenere traccia della radice del problema, eseguire Visual Studio in modalità registro. In vs 2017, esegui il comando:

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

Esegui il test.

Rivedere il file di registro test_log.txt e cercare "errore" nel file.

Il file di registro è di grande aiuto per trovare l'errore che è possibile risolvere o è possibile inviare il problema con il file di registro al team di supporto tecnico di Resharper .


7

Ho appena risolto anche questo problema. Tuttavia, nessuna delle soluzioni in questo thread ha funzionato. Ecco cosa ho fatto ...

Poiché R # non forniva dettagli sul perché le cose non andavano a buon fine, ho deciso di provare il test runner integrato VS2013. Ha avuto lo stesso identico comportamento in cui nessuno dei test è stato eseguito. Tuttavia, guardando nella finestra Output, ho finalmente avuto un messaggio di errore:

Si è verificata un'eccezione durante il richiamo dell'esecutore'ecutor: // mstestadapter / v1 ': riferimento oggetto non impostato su un'istanza di un oggetto.

Questo mi ha portato ad un altro thread su SO con una soluzione. Credetemi, non avrei MAI indovinato quale fosse il problema.

Di recente avevo apportato alcune modifiche al file AssemblyInfo.cs durante la creazione di un pacchetto NuGet. Una delle modifiche inclusa la specifica di un valore di cultura assembly di "en".

Ho cambiato questo:

[assembly: AssemblyCulture("")] 

a questa:

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

Questo è stato! Questo è ciò che inspiegabilmente ha rotto i miei test unitari. Comunque non capisco perché. Ma almeno le cose stanno funzionando di nuovo. Dopo aver ripristinato questa modifica (ovvero reimpostare la cultura su ""), i miei test hanno ripreso a funzionare.

Spero che aiuti qualcuno là fuori.


1
Ho cambiato la cultura dell'assemblaggio e R # ha smesso di eseguire i test.
Valentine Zakharenko,

grazie! il controllo della finestra di output ha rivelato il mio problema, la classe non era pubblica!
Jony Feldman,

7

Nel mio caso i [Test]metodi erano giusti private. Vergogna


1
Strano, ReSharper mi ha appena lamentato che i miei metodi [Test] erano privati. Deve essere una nuova funzionalità.
Kevin B Burns,

7

Il mio problema era che avevo installato NUnit solo con nuget. Non avevo installato NUnit3TestAdapter che era anche richiesto.

Install-Package NUnit3TestAdapter

Questa è una di quelle questioni frustranti che ti danno pochi indizi sul problema reale!
Ben Power,

6

Nel mio caso è stato un errore che ho fatto durante la copia della stringa di connessione in app.config .. L'avevo inserito nel tag configSections!

Mi ci è voluto un po 'per capire che ... grazie VS intellisense però ... o è stato più nitido?


nel mio caso, è stato il risultato di una modifica non valida nel file di configurazione
evgenyl

Il mio problema è stato causato da una cattiva risoluzione del conflitto Git che ha lasciato le informazioni sul cambio di testa nel mio file di configurazione risolto
KiwiSunGoddess,

Quasi lo stesso è successo a me, avevo aggiunto una stringa di connessione a una sezione AppSettings ridondante, quando ho rimosso la sezione AppSundings ridondante e ho spostato la stringa di connessione nelle AppSettings originali funzionava.
Sirar Salih,

La risposta su app.config danneggiato è lo stesso di prima stackoverflow.com/a/21386881/52277
Michael Freidgeim

5

Ho avuto un problema simile. VS 2010, c # CLR 2 Nunit 2.5.7, basta creare> una soluzione pulita di VS ha aiutato a risolvere questo problema


5

Nel mio caso ho creato un metodo di prova asincrono che è tornato void. Restituisce Taskinvece di voidrisolvere il problema.


4

Hai aggiunto qualche dipendenza DLL di recente? ... come me

Ho appena incontrato lo stesso problema ed è stato molto esasperante non avere alcun indizio nella finestra di output del test o altrove pratico.

La causa è stata estremamente stupida: ho appena aggiunto il giorno prima della dipendenza a una DLL esterna aggiuntiva in un sottoprogetto e l'app del progetto principale è stata effettivamente creata ed eseguita correttamente dopo la modifica. Ma i miei test unitari si trovano in un progetto gemello dell'app principale e quindi hanno avuto anche la dipendenza da questo sub-progetto modificato in cui è stata invocata la DLL ... tuttavia, la posizione di runtime del progetto di test non è quella dell'app principale! Quindi, modificando la build per eseguire la copia della DLL mancante nella directory di runtime di test, è stato risolto il problema.


4

Sto usando VS2013, ReSharper 9.1 con estensione MSpec da ReSharper e Moq. Ho riscontrato lo stesso errore "inconcludente".

Si è scoperto che uno dei miei Mock di Moq non è stato inizializzato, ma solo dichiarato. Tutti iniziarono di nuovo tutti i test.


4

Nel mio caso ho riscontrato questo errore a causa della modalità "Release" in cui la build del progetto UnitTests è stata semplicemente disattivata. Il ripristino della modalità "Debug" l'ha risolto.

È davvero sorprendente che ReSharper non possa dire nulla nel caso in cui non riesca a trovare la libreria UnitTests. Scherzi a parte, è un peccato;)

Spero che possa aiutare qualcuno


4

Nel mio caso, tutto test all'interno di alcuni progetti di test all'interno di una soluzione hanno iniziato a non essere eseguiti dopo aver aggiunto nuovi progetti. Utilizzando VS 2017 con ReSharper 2017.1.2 qui.

Prima di tutto, assicurati di non perdere tempo supponendo che il tuo problema sia correlato a ReSharper. È facile supporre che ci sia qualcosa che non va in ReSharper se si utilizzano le sue funzionalità di test dell'unità, incluso Unit Test Explorer . Aprire Visual Studio Prova Explorer sotto il test di menu e cercare Esegui tutti ". Il vantaggio di questa operazione è che la finestra di output mostrerà un messaggio di errore che potrebbe puntare nella giusta direzione. Se si nota che lo stesso insieme di prova non vengono eseguiti, quindi è lecito ritenere che il problema riguardi Visual Studio e non ReSharper.

Ho finito per eliminare e aggiungere nuovamente una delle piattaforme della soluzione attiva , Qualsiasi CPU , in Configuration Manager . In questo modo, dopo aver salvato le modifiche e riaperto la soluzione, tutti i test hanno ripreso a funzionare.

Credo che ci sia stata una voce di configurazione inattesa nel file della soluzione quando ho aggiunto nuovi progetti e, ricreando una delle piattaforme, si è corretto da solo. Ho provato a differire ma era difficile dire cosa fosse cambiato per causare il problema.


Nel mio caso, ho avuto un errore di battitura sciocco in app.config <AppConfig> invece di <AppSettings>. Adoro ReSharper, ma hanno davvero bisogno di lavorare sui loro messaggi di errore!
MichaelMilom,

4

Per coloro che stanno riscontrando questo problema per il mio progetto di test .NET Core 2.0in Visual Studio 2017 Community (v15.3 3). Ho anche avuto questo bug usando JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346- c'è un bug che ho pubblicato.

JetBrains ha consigliato di creare un nuovo progetto di test da zero per riprodurlo. Quando l'ho fatto e ho fatto funzionare correttamente i test, ho trovato il motivo che ha causato il problema:

  • Rimuovi questo dal tuo *.csprojfile:
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

Quando l'ho fatto, i test hanno iniziato a funzionare bene.


Dmitry, grazie, mi ha aiutato. Puoi spiegare cos'è questo servizio?
Vladimir Melekh

@VladimirMelekh controlla questo github.com/Microsoft/vstest/issues/472
Dmitry Pavlov

3

Sto usando VS2010, NUnit 2.6.3 (anche se internamente ReSharper dice che sta usando 2.6.2?), ReSharper 7.7.1 e NCrunch 2.5.0.12 e stavo eseguendo la stessa cosa "... test is inconclud ..." con NUnit, ma NCrunch ha detto che tutto andava bene. Per la maggior parte di oggi NUnit & NCrunch erano in sintonia concordando su quali test erano felici e quali necessitavano di refactoring, poi è successo qualcosa che ancora non capisco, e per un po 'NCrunch ha detto che avevo dei test falliti (ma superarli li ha mostrati pass), poi ha deciso che stavano funzionando tutti e NUnit ha iniziato a lamentarsi di tutti i miei test tranne uno con lo stesso messaggio "..test is inconclud ..." che sono stato di nuovo in grado di passare a un passaggio anche se NUnit ha continuato per mostrarlo come "inconcludente").

Ho provato inutilmente alcuni dei suggerimenti precedenti e alla fine ho appena chiuso VS2010 e ho riaperto la soluzione. Voila, ora tutti i miei test sono di nuovo felici e NCrunch e NUnit riportano nuovamente gli stessi risultati. Sfortunatamente non ho idea di cosa sia cambiato per farli andare fuori sincrono, ma chiudere e riaprire VS2010 sembra averlo corretto.

Forse qualcun altro si imbatterà in questo e sarà in grado di utilizzare questa semplice soluzione (se alla fine insoddisfacente poiché non sai quale sia la vera soluzione).


3

Ho avuto lo stesso problema. Il colpevole era un riferimento esterno non compatibile con le impostazioni di creazione del mio progetto. Per risolvere, ho cliccato con il tasto destro sul progetto-> proprietà-> build-> Target piattaforma-> passaggio da Qualsiasi CPU a x86.

Il particolare * .dll con cui stavo lavorando era System.Data.SQLite. Quel particolare * .dll è hardcoded per il funzionamento a 32 bit. L'impostazione "Qualsiasi CPU" ha tentato di caricarlo come 64 bit.


La mancata corrispondenza del target della piattaforma può verificarsi anche con riferimenti ad altri progetti all'interno della stessa soluzione.
Chaquotay,

3

La mia soluzione:

NUnit 3.2.0 presenta alcuni problemi con Resharper - downgrade a 2.6.4:

update-package nunit -version 2.6.4

3

Nel mio caso il mio metodo di test era privato, l'ho cambiato in pubblico e ha funzionato.


3

Causato dal file App.Config mancante (non corrotto). Aggiunta di un nuovo (Aggiungi -> Nuovo elemento ... -> File di configurazione dell'applicazione) risolto.


3

Ho avuto lo stesso problema: era correlato alla versione di compatibilità tra NUnit 3.5 e Resharper 9.2, poiché è stato risolto eseguendo il downgrade da NUnit 3.5 a 2.6.4. Ha funzionato per me. in bocca al lupo.


Avevo compilato un assieme di prova contro 3.6.1 e il mio assieme di prova principale era stato compilato contro 3.7.1. Declassato a 3.6.1 e ora va tutto bene.
Tom,

È stato il caso di ReSharper 2017.3.2 e NUnit 3.11. Vedi commento per nunit github.com/nunit/nunit/issues/3086#issuecomment-466988760
Puterdo Borato

3

Se stai usando xUnit, ho risolto il problema con l'installazione del xunit.running.visualstudiopacchetto. (attualmente in uso xUnit 2.3.1e VS17 Enterprise 15.3.5)


3

Ho avuto lo stesso problema per eseguire qualsiasi test utilizzando il framework NUnit. "Inconcludente: test non eseguito" Visual Studio 2017 15.5.6

ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130

RISOLTO Aggiunta della dipendenza del progetto a Microsoft.NET.Test.Sdk


Non ha aiutato nel mio caso
Dmitry Avtonomov il

2

Per coloro che hanno fretta di eseguire i test, ho dovuto usare VS 2017 test explorer per eseguire i test;

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


2

Questo errore si è verificato con Visual Studio 2017 e la versione resharper 2018.2.3 ma la correzione si applica alle versioni di Visual Studio 2019 a.

La correzione, per far funzionare i test in Resharper, era semplicemente l'aggiornamento all'ultima versione di Resharper (2019.2.1) al momento della scrittura.


1

Ho avuto lo stesso identico problema e nulla mi ha aiutato.

alla fine ho visto che avevo una discrepanza nei miei spazi dei nomi del progetto unitario e del progetto unit test.

Lo spazio dei nomi del mio progetto unitario è unit.project e il progetto di test era denominato unit.project.tests ma lo spazio dei nomi predefinito del test era lo stesso dell'unità, entrambi erano unit.project.

Dopo aver aggiornato gli spazi dei nomi in modo che siano diversi (uno spazio dei nomi per ciascun progetto), tutto ha funzionato!


Sì, ho avuto lo stesso problema. L'idea potrebbe essere quella di rendere identici il progetto di test e il progetto di destinazione per facilitare l'accesso, ma si avvita con il test runner e produce questo problema dall'OP.
atconway,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.