Test non in esecuzione in Test Explorer


147

Attualmente sto lavorando a una soluzione che ha attualmente 32 Unittest. Ho lavorato con il test runner resharper - che funziona benissimo. Tutti i test sono in esecuzione, tutti i test mostrano il giusto risultato del test. Ora un collega mi ha detto che i test non sono in esecuzione sulla sua macchina utilizzando Visual Studio Test Explorer. Non funzionano né sulla mia macchina, quindi posso escludere alcuni file mancanti locali o qualcosa del genere.

Test Explorer mostra tutti i test unitari, ma facendo clic su "Esegui tutto", tutti i test vengono disattivati ​​e non viene visualizzato alcun risultato dell'esecuzione del test:

inserisci qui la descrizione dell'immagine

  • Tutte le classi di test sono pubbliche
  • Tutte le classi di test hanno l' [TestClass]attributo dichiarato
  • Tutti i metodi di test utilizzano l' [TestMethod]attributo
  • Sia il codice di produttività che i progetti di test sono rivolti a .NET 3.5.
  • Ho già provato a generazione pulita la mia soluzione, e / o eliminare tutti obj, bin, Debuge Releasecartelle

Apprezzerei qualsiasi suggerimento che potesse causare un simile comportamento.


3
Aggiorna il tuo ReSharper. Fare riferimento a questo stackoverflow.com/questions/16011775/...
kmhigashioka

18
Non sarebbe meraviglioso se VS dicesse perché non è stato eseguito un test? Piattaforma target non corrispondente, adattatore di prova mancante, ... :(
Bernhard Hofmann il

1
Dove si dice che usano ReSharper?
Alex 75

6
@BernhardHofmann Ho riscontrato un problema proprio come questo in questo momento e si scopre che VS stava emettendo alcuni messaggi di errore in Output> Test. Importante. Frustrante che VS non li rende più visibili, ma è un posto in cui guardare in una situazione come questa.
JLRishe

2
Potreste essere interessati a migliorare questa richiesta di funzionalità: developercommunity.visualstudio.com/idea/947742/…
Kyle Delaney,

Risposte:


157

Se i tuoi progetti non sono tutti AnyCpu, puoi anche verificare che le seguenti 2 impostazioni corrispondano:

  1. [Progetto test test destro] -> proprietà -> Build -> Target piattaforma - ad es. X64

  2. [Menu principale] -> Test -> Impostazioni test -> Architettura processore predefinita -> X64

Ho scoperto che quando questi non corrispondevano al mio progetto di test non veniva eseguito in modo silenzioso.


5
questa risposta è collo-e-collo con "accendi e spegni di nuovo", quindi, se questo funziona per te, ti preghiamo di votare.
Lukkea,

questo risolto i miei problemi (passando da piattaforme miste a anycpu)
Marcel Studer

1
assicurati che i tuoi progetti di test non siano netstandard2.0 ma netcoreapp2.2
user2033412

4
Lavorato. Io davvero con VS ci darebbe un chiaro avvertimento o un messaggio di errore o qualcosa del genere.
anon

9
Versione VS2019: Menu principale -> Test -> Architettura processore per progetti AnyCPU -> X64.
StackOverthrow

64

Ho avuto lo stesso problema in VS 2017. Nel mio caso è stato risolto riavviando VS.


7
il mio commento precedente sul perché ho dato questo voto negativo è stato eliminato, quindi sarò un po 'più chiaro. Questa non è una soluzione al problema; è una soluzione molto temporanea che non risolve il problema di fondo. Non penso che SO dovrebbe essere un posto in cui le persone dovrebbero venire a sapere "spegnilo e riaccendilo", ovvero la conoscenza da imparare molto prima di arrivare qui. Vedere la risposta di Joseph Simpson per una soluzione.
Lukkea,

5
@lukkea Ho seguito la risposta di Joseph Simpson e confermato che tutti i miei progetti erano AnyCpu. Ho ancora avuto il problema descritto qui. Per me il semplice riavvio di VS ha aiutato. Non è la prima volta che VS2012 ha questo tipo di problemi (e non solo sulla mia macchina). Concordo con te sul fatto che questa non è una buona soluzione, ma se non c'è nulla di sbagliato nel progetto, questo potrebbe essere l'unico aiuto. Uno dovrebbe verificare se la pulizia di una ricostruzione non aiuta neanche.
Sascha,

2
Se solo "accenderlo e spegnerlo di nuovo" risolvesse tutti i miei problemi. Ancora sorprendente quanti ne risolva. È leggermente imbarazzante che mi sia dovuto andare su StackOverflow per ricordarmi di farlo, ma ho trovato utile questa risposta.
Richard Garside

2
@lukka a volte Visual Studio è il problema di fondo e il riavvio è la soluzione
JSON

1
Funziona ancora per VS2019 ....
Tronald

45

Se si utilizza NUnit anziché MSTest, sarà necessario estensione dell'adattatore di test NUnit per Visual Studio 2012/2013.


9
Questo mi ha aiutato a capire che dovevo installare "NUnit 3 Test Adapter": marketplace.visualstudio.com/…
Westerlund.io

10
In VS 2019 ho lavorato per me per installare l'adattatore dal gestore pacchetti nuget.org/packages/NUnit3TestAdapter
maylon

Secondo questa pagina devi anche installare Microsoft.NET.Test.Sdkda Nuget
BlueRaja - Danny Pflughoeft il

In VS 2017 ho installato l'adattatore di test Extension Nunit 3 e ha funzionato.
Bob Lokerse

In VS 2019 ho anche installato l'adattatore di test Extension Nunit 3 e ha funzionato. Una nota: avevo anche bisogno di aggiornare Visual Studio.
Bob Lokerse il

43

Ho dovuto modificare i miei metodi di test asincroni per restituire Task anziché nullo.

I test erano quindi attivi ed eseguibili in Test Explorer.


1
Non è possibile attendere il completamento di un metodo vuoto asincrono. Il vuoto asincrono è "fuoco e dimentica". Ecco perché non possono essere testati.
Ketobomb,

Il facepalming che ho fatto quando ho letto questo echeggiato sulla terra ... Grazie per aver sottolineato la mia stupidità. Questo ha funzionato per me. Votato
JP Chapleau il

Sebbene archiviato nella categoria "no duh". Vorrei che questo potesse essere più votato perché è ovvio che il tuo tipo di ritorno deve essere Task ma facile da dimenticare (perché apparentemente nessun altro test unitario al mondo restituisce altro che nullo) e ti manda giù nella tana del coniglio per riparare la tua unità testare la configurazione quando non c'è nessun problema di configurazione reale. Vorrei davvero che questo causasse un compilatore o perlomeno generasse un errore di runtime.
pat8719

2
@ pat8719, sembra una buona idea per un analizzatore di codice. Non sono troppo difficili da scrivere. Ho appena scritto un fatto su xunit async void Foo()e i loro analizzatori non si sono lamentati, ma hanno sicuramente potuto aggiungerne uno che lo avrebbe fatto. cc: @bradwilson
benmccallum,

22

Controlla su quale framework sono scritti i test (ad es. Nunit, xunit, VS test, ecc.) E assicurati di avere installato l'adattatore / estensione del test corretti.

Per me mancava l'adattatore di test NUnit 3 e ho confermato il numero di versione richiesto guardando la versione di dipendenza nunit.framework (selezionare il file .dll nella struttura delle dipendenze in Esplora soluzioni e premere F4 per visualizzare la finestra Proprietà).


2
Nota per sé: il mio proj MSTest originale ref'd Microsoft.VisualStudio.QualityTools.UnitTestFramework(incerto su quale versione). Risolti i problemi in cui il metodo non veniva eseguito (o trovato) rimuovendo tale riferimento e installando l'ultimo (v2.1.0) MSTest.TestAdapter (e Framework)
Adam Cox

@AdamCox è Microsoft.VisualStudio.TestTools.UnitTestingdeprecato? Ho fatto alcuni test usando questo che improvvisamente ha smesso di funzionare come sopra dopo aver aggiunto nuovamente alcuni riferimenti a un progetto da cui dipendevano.
ebyrob

@ebyrob, la risposta di Athanasios di seguito potrebbe essere pertinente. Sembra che non solo abbia dovuto aggiornare / aggiornare i pacchetti MSTest. *, Ma anche aggiungere alcune dipendenze e correggere alcuni reindirizzamenti vincolanti. Controlla l'output degli avvisi.
benmccallum,

16

TLDR: aggiorna i pacchetti di test, guarda nell'output -> console di test

Ho lottato con questo per un giorno e mezzo. quindi ecco cosa ho fatto per risolverlo:

Sintomi

  1. 5 progetti di unit test, tutti rilevabili in TestExplorer
  2. 2 su 5 eseguiti correttamente
  3. 3 affermando che non funziona affatto
  4. Il problema è iniziato dopo un aggiornamento del framework .net

Indagine

Poiché tutti i pacchetti sono stati aggiornati durante l'aggiornamento del framework .net, ho iniziato con le differenze tra i progetti workin e non working. Il primo indizio era che tutti e 3 i progetti stavano usando: MSTest.TestAdapter e MSTest.TestFramework

Ovviamente sono andato a -> Console di output -> Test a discesa in VS 2019 e ho guardato l'output. Niente di utile lì.

Passaggio 1 della soluzione : aggiornare MSTest.TestAdapter e MSTest.TestFramework alla versione 2.0.0

Fase due della soluzione : ora la console di output -> l' output del menu a discesa Test ha iniziato a mostrare uno dopo l'altro, pacchetti mancanti e reindirizzamenti di associazione errati

Passaggio 3 della soluzione : aggiungere manualmente i pacchetti mancanti. Per me quelli erano

  1. System.Runtime.Extentions
  2. System.Reflection
  3. Forse un po 'di più che mi manca

Passaggio 4 della soluzione : rimossi / riparati i reindirizzamenti dell'associazione non necessari.

Spero che questo possa aiutare qualcun altro.


Mi hai salvato quel giorno e mezzo! Ho aggiornato un progetto versione 4.5 FW e ho provato a rimuovere tutte le cose non necessarie dai pacchetti e sono finito in questa situazione. Grazie!
Numan,

Penso che stavo vivendo qualcosa di simile. Alla fine ho appena ricreato il progetto da zero. Apparentemente c'è una linea nel file * .csproj che imposta ToolsVersione sbattere la mia ha incasinato tutto. Tutto quello che posso dire è "attenzione all'acquirente" per i test delle unità MS ed essere pronti a sostituire i file * .csproj in un attimo che questa roba è strettamente integrata e molto dipendente dalla versione.
ebyrob

Grazie, sebbene non direttamente il mio problema, il suggerimento per controllare l'output della console mi ha mostrato l'errore (il metodo Dispose DBContext conteneva un errore) che impediva l'esecuzione dei miei test.
Iain Carlin,


11

Ho avuto questo problema e per me è stato causato dalla presenza di più progetti di test con diverse versioni di:

  • MSTest.TestAdapter
  • MSTest.TestFramework

Consolidare i pacchetti nuget per i progetti in modo che fossero gli stessi risolto il problema per me.


1
Questa risposta mi ha aiutato a trovare una causa simile. Nel mio caso alcuni progetti di test avevano riferimenti a Microsoft.VisualStudio.TestPlatform.TestFramework (e non sono stati eseguiti) mentre altri avevano riferimenti a Microsoft.VisualStudio.QualaityTools.UnitTestFramework (che erano i progetti che sarebbero stati eseguiti).
jr

11

Ha avuto lo stesso problema dopo un'installazione pulita di VS 2019. I test sono stati trovati ma non eseguiti con "Si è verificato un errore imprevisto". Risolto impostando x64 anziché x86 che era selezionato per impostazione predefinita.

inserisci qui la descrizione dell'immagine


4
Questa è stata la soluzione per me, insieme al riavvio di VS e alla cancellazione della cartella .vs. Grazie.
Donald

Non riesco a credere che questo sia ancora un problema ... Speriamo che Microsoft abbia emesso una sorta di avvertimento per quel classico intoppo ad un certo punto.
Guillaume LaHaye

10

Ho scoperto che nel progetto non faceva riferimento all'assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework . Invece, faceva riferimento a Microsoft.VisualStudio.TestPlatform.TestFramework e Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions . Quando ho rimosso quei due riferimenti e ho aggiunto il riferimento all'assembly Microsoft.VisualStudio.QualityTools.UnitTestFramework , i test precedentemente contrassegnati con il punto esclamativo blu sono diventati improvvisamente attivi e hanno iniziato a funzionare.

I test unitari non vengono eseguiti con un assemblaggio errato

Con il giusto assemblaggio, i test vengono eseguiti


3
Dopo il passaggio da .NET Framework 4.6.2 a .NET Framework 4.7.2 i miei test non erano più in esecuzione. Dopo ore di tentativi, solo questa soluzione ha funzionato per me.
Éric Bergeron,

Dopo il passaggio da .NET Framework 4.6.2 a .NET Framework 4.7.2 - Ho dovuto eliminare tutti i reindirizzamenti di associazione in app.config
bkwdesign

8

Nel mio caso, è stato perché un progetto di test nella mia soluzione aveva i pacchetti nuget MSTest.TestFramework e MSTest.TestAdapter installati ma gli altri no. Apparentemente a questi pacchetti non era richiesto di eseguire i test fino a quando un progetto nella soluzione non li avesse installati.

Il problema è stato risolto installando quei pacchetti su progetti di test mancanti.


Nel mio caso è esattamente l'opposto: qualsiasi progetto di unit test, che ha i pacchetti nuget MSTest, non verrà eseguito, come fanno gli altri. Strano.
Palle Due,

Risolto : ho un file .testsettings. I pacchetti MSTest richiedono un file .runsettings. Ecco perché i test non sono in esecuzione.
Palle Due,

7

Ciò che ha risolto il problema per me è stato l'aggiornamento dei pacchetti nuget di MS.Test


7

Installa Nunit3TestAdapterNuget ha risolto questo problema


questo ha risolto anche il mio problema! :)
Eru,

6

inserisci qui la descrizione dell'immagine

L'impostazione dell'architettura del processore per i progetti AnyCPU in Test Explorer ha risolto il mio problema! Vedi screenshot sopra.


Grazie mille! Mi ha aiutato =)
Alexander Brattsev il

4

Nel mio caso avevo un async voidmetodo e l'ho sostituito async Task, quindi il test viene eseguito come mi aspettavo:

    [TestMethod]
    public async  void SendTest(){}

sostituirlo con :

    [TestMethod]
    public async  Task SendTest(){}

1
Questo era il mio problema
Kyle Delaney, il

3

Ho avuto gli stessi sintomi.

Assicurati di aver installato l'estensione Visual Studio corretta tramite Strumenti - Estensioni e aggiornamenti. Nel mio caso, ho dovuto installare XUnit e Specflow dall'opzione Online.

Quindi pulire la soluzione e ricostruirla.

Se il problema persiste, cancella la tua directory temporanea (cerca% temp% nel menu Start cerca ed elimina tutti i contenuti in Temp)

E infine prova a disinstallare Resharper che alla fine ha risolto il mio problema.


4
Disinstallare Resharper ?! Non credo che questa sia una soluzione ^^
Steve Rakebrandt,

3

È possibile visualizzare l'output di errore del test runner aprendo il pannello Output (visualizza -> output) e scegliendo "test" dal menu a discesa "Mostra output da"

mostra output da


Inoltre, se hai installato Resharper , puoi aprire un file di test e passare con il mouse sopra il cerchio di prova accanto a un test per ottenere ulteriori informazioni sull'errore

Uscita resharper

Facendo clic su questo si accederà a una finestra con informazioni più dettagliate. In alternativa, puoi aprire quella finestra andando su Estensioni -> Reshaper -> Windows -> Risultati dell'esplorazione del test unitario

Esplorazione del test dell'unità resharper


2

Qui era il progetto di test non è stato segnato per essere costruito:

Build -> Configuration Manager ... -> controlla build per il tuo progetto di test


2

Da quando sono arrivato qui con questo tipo di errore, inserisco il mio problema / soluzione:

Sintomi:

  • Non tutti i test sono in esecuzione, ma non dipendono dal progetto, ma solo alcuni di essi sono stati eseguiti.
  • Tutti quelli giustiziati erano verdi.
  • Stack tecnico: dotnet core / XUnit / FluentAssertions
  • Tutti i test sono stati rilevati e aggiornati se sono cambiati.
  • Selezionando o eseguendo "Test non eseguiti" più volte potrebbero essere eseguiti.

Problema:

Si è verificato un errore nel codice che ha generato un'eccezione all'interno di un altro thread. Tutte le asserzioni del test sono state superate ma ha annullato l'esecuzione del test. Ho potuto vedere l'errore nell'output "Test" (NullException).


+1 Ho provato a eseguire il debug di un test specifico. Quando finalmente ho eseguito un altro test più semplice, ho potuto eseguire il debug del test specifico. Questa risposta mi ha portato a provarlo.
Halvard,

2

Aveva gli stessi sintomi, nel mio caso era il problema con la versione SDK core dotnet .

I progetti avevano come target 2.2 e sono stati in grado di essere realizzati utilizzando 3.0. Dopo aver installato la versione SDK 2.2 più recente, sono stati in grado di funzionare.


2

Ho provato molte opzioni con Visual Studio 2019 versione 16.4.6 e Microsoft.VisualStudio.TestTools.UnitTesting, ma per ora l'unico modo per eseguire correttamente i test è stato invocare il comando successivo nella console

dotnet test

I test vengono rilevati in Test Explorer ma il risultato è "Non eseguito".

L'aggiornamento di Visual Studio non ha aiutato.

Problema risolto con "Nessun test corrispondente al filtro testcase dato NomeQualificato" eseguendo gli aggiornamenti all'ultima versione per i pacchetti successivi:

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

1

Per me la soluzione è stata quella di modificare le impostazioni di Test dell'unità di resharper "Architettura piattaforma predefinita" in "x64"

inserisci qui la descrizione dell'immagine


Ciò ha risolto il mio problema con un progetto .NET Core 3.1 che ha rifiutato di eseguire test in Test Explorer. Nient'altro lo risolverebbe tranne questo.
J_L

1

Per me il riavvio di VS2017 non ha funzionato. Ho dovuto pulire sln quindi ho trovato un file con i test che non sono stati eseguiti ed eseguito solo quel file. Dopo di che ho eseguito tutto e ha funzionato di nuovo normale.


1

Avevo diverse versioni dei pacchetti nuget NUnit (3.11.0) e NunitTestAdapter (3.12.0). Quando ho aggiornato NUnit alla 3.12.0, Visual Studio ha eseguito i test.


1

Nel mio caso ha funzionato per aggiornare i pacchetti nuget MSTest. Potrebbe riprodurre questo problema anche sul progetto MSTest vuoto e l'aggiornamento dei pacchetti ha funzionato.


1

Per me avere una proprietà chiamata TestContext in una classe base stava causando questo comportamento. Per esempio:

[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 dire dai tuoi attributi che stai usando MSTest. Ho avuto un problema simile: i miei test venivano visualizzati in Test Explorer, ma quando avrei provato a eseguirli (scegliendo Esegui tutti o selezionandoli singolarmente) non lo avrebbero fatto.

Il mio problema era che avevo creato manualmente il progetto unit test da un progetto .NET Standard Class Library vuoto. Avevo installato il MSTest.TestFrameworkpacchetto NuGet, ma non il MSTest.TestAdapterpacchetto. Non appena ho installato il pacchetto adattatore, hanno funzionato come previsto.

Sembra ovvio in retrospettiva, ma quando si creano progetti di unit test da un modello, si danno queste cose per scontate.


1

Vale la pena ricordare che a volte i file di NUnit Test Adapter vengono danneggiati nella cartella utente C: \ Users [Utente] \ AppData \ Local \ Temp \ VisualStudioTestExplorerExtensions \ NUnit3TestAdapter.3.8.0 / build / net35 / NUnit3.TestAdapter.dll su Windows 10 e che fa sì che Explorer Explorer smetta di funzionare come dovrebbe.


1

Uso VS2019 con .Net 4.7. Ho installato l'estensione NUnit v3 e ho modificato le impostazioni di test per utilizzare X64. Il mio progetto di unit test è Any CPU (funzionerebbe se lo cambiassi in x64). Ora posso eseguire il debug tramite il mio codice.


1

Questo problema si riscontra anche quando il metodo di test in esecuzione genera StackOverflowException , facendo in modo che il test runner interrompa l'esecuzione del test, generando l'output0 tests run .

Per trovare il colpevole e risolverlo, inserire un punto di interruzione all'inizio dei metodi decorati TestInitialize e TestMethod , eseguire il test dell'unità in modalità debug, procedere oltre (F10) fino a quando non viene generata l'eccezione.

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.