Perché Visual Studio 2015/2017/2019 Test Runner non rileva i miei test xUnit v2


173

AGGIORNAMENTO: aggiunta di un 2019; il meccanismo di integrazione scoperta / corridore è lo stesso del 2017 e 2015, quindi le cose chiave che possono andare storto sono le stesse.


Ho letto Perché il corridore xUnit non trova i miei test, il che spiega i motivi per cui xUnit non sarebbe mai in grado di trovare i tuoi test, ma il mio problema è diverso: sono sicuro che non ci sia nulla di sottile nei miei test; (hanno funzionato in altri ambienti, questo sembra essere solo la mia macchina) - Visual Studio Test Runner in Visual Studio 2015 [Community Edition] non sta semplicemente mostrando nessuno dei miei test. Non sto facendo nulla di eccitante da remoto; i test hanno come destinazione xUnit.net v2 sul desktop.

Ho cercato nella finestra Output e non vedo nulla in Test in Mostra output dalle schede.



1
È solo un possibile problema, ma ovviamente è necessario compilare il progetto di test prima che venga mostrato nell'esploratore di test.
Niklas Peter,



L'installazione di Xunit.Runner.VisualStudio ha risolto il mio problema
Bendram il

Risposte:


210
  1. Elimina le eccezioni di scoperta dalle tue richieste; vai alla finestra di output (Ctrl-Alt-O), quindi cambia l' output dello show dal menu a discesa (Shift-Alt-S) a Test e assicurati che non ci siano eccezioni di rilevamento

  2. Test | Impostazioni test | L'architettura del processore predefinita può aiutare se i test sono specifici di x86 / x64 e il rilevamento sta provocando eccezioni correlate alla bitterness, ovvero non AnyCpu

  3. Come suggerito in questa risposta (votalo se la tecnica aiuta) l' esecuzione del runner della console desktop ( istruzioni ) può essere un buon controllo incrociato per eliminare altre possibilità, ad esempio file di configurazione alterati: -

    packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>

    NOTA Il xunit.runner.consolepacchetto è obsoleto: quando fai funzionare cose in VS, sarai in grado di dotnet testeseguirle anche in contesti CI


Vai a leggere la documentazione : è completa, aggiornata, include informazioni sulla risoluzione dei problemi e richiede PR: -

Nota importante: se hai precedentemente installato xUnit.net Visual Studio Runner VSIX (estensione), devi prima disinstallarlo. Il runner di Visual Studio è distribuito solo tramite NuGet ora. Per rimuoverlo, vai su Strumenti > Estensioni e aggiornamenti . Scorri fino alla fine dell'elenco e, se xUnit.net è installato, disinstallalo. Questo ti costringerà a riavviare Visual Studio.

Se riscontri problemi nel rilevare o eseguire i test, potresti essere vittima di una cache del corridore danneggiata all'interno di Visual Studio. Per cancellare questa cache, chiudere tutte le istanze di Visual Studio, quindi eliminare la cartella %TEMP%\VisualStudioTestExplorerExtensions. Assicurati inoltre che il tuo progetto sia collegato solo a una singola versione del pacchetto NuGet del Visual Studio Runner ( xunit.runner.visualstudio).

I seguenti passaggi hanno funzionato per me:

  1. (Solo se sospetti che ci sia un disordine serio sulla tua macchina - in generale il caso più comune è che l'integrazione di Visual Studio non è ancora stata installata)

    Fare DEL %TEMP%\VisualStudioTestExplorerExtensionscome consigliato: -

    PS> del $env:TEMP\VisualStudioTestExplorerExtensions

  2. Installa il pacchetto NuGet xunit.runner.visualstudioin tutti i progetti di test

    • Paket:

      .paket\paket add nuget xunit.runner.visualstudio -i

      Devi finire con quanto segue nel tuopaket.dependencies :

      nuget xunit.runner.visualstudio version_in_path: true

      Nota che il version_in_path: truebit è importante

    • Nuget: vai alla console di Gestione pacchetti (Alt-T, N, O) e

      Install-Package xunit.runner.visualstudio)

    Ricostruisci per assicurarti che xunit.runnerfinisca nella directory di output

  3. Chiudi Test Explorer <- questo era il bit mancante per me

  4. Riapri Test Explorer (Alt-S, W, T)

  5. Esegui tutti i test (Ctrl R, A)


12
"Chiudi Test Explorer <- questo era il pezzo mancante per me" Questo è il passo più importante che mi sono perso anche e ho impiegato 5 ore per capire. Grazie, avrei dovuto prestare attenzione ai passaggi :)
Esen,

1
il corridore VS xunit stava lavorando per il mio sln. Tuttavia, un giorno ha smesso di presentarsi. Ho scoperto che non ho installato il VS in esecuzione, e funzionava probabilmente a causa della cache, lasciata dall'altro sln su cui è installato il runner. Dopo aver installato il corridore, le cose funzionano di nuovo bene. Quindi non dimenticare di installare il runner per ogni sln.
ZZZ,

1
Questo è incredibile. L'eliminazione della cartella contenente altre tre cartelle vuote ha risolto il problema.
t3chb0t,

1
@martinJH Ne ho una risposta a me stesso (collegato in OP): - stackoverflow.com/questions/16214684/… ;) Non rivelando come l'ho scoperto, però
Ruben Bartelink,

1
Roba davvero strana, ma cancellare %TEMP%\VisualStudioTestExplorerExtensionse riavviare VS alla fine ha funzionato!
Hinrich,

35

Ho dovuto modificare le impostazioni di test dopo aver modificato la CPU dei progetti di test in x64. Quindi i test sono stati nuovamente rilevati.

Architettura


Hai visto prima un messaggio nell'output del rilevamento test?
Ruben Bartelink,

No, non ho visto alcun errore, ci è voluto un po 'per capire.
Max

hmm; strano (vedi la parte superiore della mia risposta - spiega dove cercare; normalmente questo è contrassegnato (anche se ci sono casi def in cui semplicemente non ci sono messaggi da nessuna parte))
Ruben Bartelink

Questo mi ha risolto. Non so perché questo aiuti, ma lo fa.
VSO,

2
Ho dovuto pulire -> ricostruire dopo aver cambiato.
user2023861

32

Nessuna delle soluzioni di cui sopra ha funzionato per me (dotnetcore 1.1, VS2017). Ecco cosa l'ha risolto:

  1. Aggiungi pacchetto NuGet Microsoft.TestPlatform.TestHost
  2. Aggiungi pacchetto NuGet Microsoft.NET.Test.Sdk

Questi sono in aggiunta a questi pacchetti che ho installato prima:

  • xunit (2.3.0-beta1-build3642)
  • xunit.runner.visualstudio (2.3.0-beta1-build1309)

9
Questo mi ha aiutato, mi mancava il pacchetto xunit.runner.visualstudio.
Ognjen Babic,

Il mio progetto .NET 4.72 MS Test era necessario TestPlatform.TestHostsolo durante la migrazione da VS 2017 a VS 2019.
ΩmegaMan

Questo mi ha risolto. Nella finestra Output, selezionare Test dal menu a discesa => vedere il messaggio "TestHost mancante".
datchung

22

Installa il xunit.runner.visualstudiopacchetto per il progetto di test


La migliore risposta sulla pagina. Risolto il mio problema
RB Davidson

14

Segui questi passaggi:

  1. Aggiorna il tuo MsTest.TestAdaptere MsTest.TestFramework dll'sda nugget package manager.
  2. Pulisci la tua soluzione
  3. Crea la tua soluzione.

1
Puoi aprire un clone di questa domanda e auto risposta per favore come ho fatto? Questo riguarda xUnit v2 e versioni successive. Anche le risposte di xUnit v1 non hanno spazio qui. Puoi collegarti ad esso con un vedere anche nella parte superiore della domanda, oppure posso collegarlo ad essa nella domanda
Ruben Bartelink,

Questa soluzione funziona .. Altrimenti ogni volta che dovevo rimuovere %TEMP%\VisualStudioTestExplorerExtensionse ancora a volte dovevo eseguire i test dalla console.
Venky,

Sto usando NUnit e ho risolto questo problema aggiornando NUnit3TestAdapter all'ultima versione tramite NuGet.
dpberry178,

Grazie per questo - nel mio caso ho dovuto solo aggiornare-pacchetto-reinstallare MSTest.TestAdapter e i test sono stati raccolti.
Rob

10

Ho avuto difficoltà con tutto questo pomeriggio mentre lavoravo con un progetto ASP Core e xUnit 2.2.0. La soluzione per me è stata l'aggiunta di un riferimento aMicrosoft.DotNet.InternalAbstractions

L'ho scoperto quando ho cercato di eseguire manualmente il progetto di test con il dotnet testquale non è riuscito ma ho riferito che InternalAbstractionsmancava. Non ho visto questo errore nella finestra di output del test quando il rilevamento automatico non è riuscito. Le uniche informazioni che ho visto nella finestra di rilevamento erano un codice di ritorno, che all'epoca non significava nulla per me, ma con il senno di poi probabilmente indicava un errore.


"ma ha segnalato un errore utile" ... quale era? Puoi anche verificare che non sia stato sicuramente elencato nella finestra degli errori di individuazione come indicato nell'OP - cioè puoi affermare con sicurezza "Ho guardato nella finestra Output e non vedo nulla sotto Test nella scheda Show output from ". ?
Ruben Bartelink,

1
Vedi la risposta aggiornata, in seguito posterò le informazioni sul codice di ritorno nel caso sia pertinente.
Tom Makin,

9

Mi è successo un paio di volte - quando pulisco il progetto e lo costruisco di nuovo, tende ad andare bene.


qualche messaggio rivelatore quando guardi nella finestra di output con Test selezionati nel menu a discesa?
Ruben Bartelink,

2
Niente affatto, dice semplicemente Nessun test trovato
Liam

Nel mio caso, Test Explorer era sospeso su un test precedentemente fallito. Se lo sfogliassi e provassi a fare clic con il pulsante destro del mouse -> Esegui o altro, l'intero VS si bloccherebbe. Basta fare un Clean and Rebuild per cancellare lo stato del test e risolto il problema per me.
Piedone,

Posso aggiungere che semplicemente la costruzione (ad es. F6) non aiuta, è necessario fare clic con il tasto destro del mouse sulla soluzione in VS Solution Explorer e fare clic su Ricostruisci soluzione.
Piedone,

8

Assicurati che la tua classe di test sia pubblica .


questo è esplicitamente affrontato nella prima condizione (io collego un'altra domanda che copre quel caso); questo Q + A riguarda solo la risoluzione di come normalmente i test OK che funzionano in altri luoghi non funzionano per qualcuno giusto ora in un determinato ambiente. Per me questa risposta confonde le cose in quanto diluisce quel distinto.
Ruben Bartelink,

1
Grazie mille. Mi hai salvato la giornata.
hellouworld,

7

La ragione nel mio caso era che la build di destinazione non era la stessa tra debugger del progetto e test runner. Per unificare quegli elementi:

  1. Test> Impostazioni test> Architettura processore predefinita. quindi selezionare X64 o X86.
  2. Progetto> (il tuo progetto) Proprietà> Costruisci (scheda)> destinazione piattaforma.

Dopo che sono identici, ricostruisci la tua soluzione, quindi verranno visualizzati i metodi di prova.


6

Dopo aver trascorso 2 giorni ... nessuno dei precedenti ha funzionato per me. L'unica "soluzione" era: Vai alle proprietà del progetto -> Scheda Crea. Quindi fare clic sul pulsante Avanzate nell'angolo in basso a destra del riquadro. Modifica "Informazioni debug:" su "completo" e fai clic su OK.

Ecco le schermate: inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine


sembra doloroso. Grazie per aver condiviso e spero che possa aiutare qualcuno un giorno. Tuttavia devo dire: non riesco a pensare a nessuna ragione per cui il livello di informazioni di debug influenzi il processo di scoperta, quindi posso solo dire "Non penso che sia stato ciò che ha sparato all'orso" - speriamo di sbagliarmi comunque;)
Ruben Bartelink il

@RubenBartelink è completamente d'accordo con te, ecco perché ho citato la "soluzione" in un preventivo :) ma abbastanza strano, ha funzionato subito dopo averlo fatto.
curiousBoy,

Grazie mille. Questa è stata anche la soluzione per me :)
Babulaas,

6

Sto usando xUnit 2.2.0.

Il mio problema era che la mia soluzione non era in grado di trovare alcune DLL e app.configcercava di risolverle. L'errore non veniva visualizzato nella finestra di output del test in Visual Studio.

Sono stato in grado di identificare l'errore quando ho installato xunit.runner.consolee ho provato a eseguire i test dalla riga di comando.

Come eseguire i test xunit nella CLI .


5

Posso fornire una soluzione per un caso limite che ho incontrato qualche giorno fa. Non sarà la soluzione che si adatta a tutti gli scenari sopra descritti, tuttavia, per il caso limite che ho avuto risolto.

Ho avuto lo stesso problema con il più recente VS 2017 (versione 15.5.7) e XUnit 2.3.1. Il pacchetto xunit.runner.visualstudio è stato installato, tuttavia i test non sono stati visualizzati nell'esploratore di test integrato di VisualStudio.

Stavo lavorando a un progetto legacy mirato a .NET framework 4.5. Tuttavia, a partire dalla versione 2.2. XUnit non supporta framework .NET inferiori alla 4.5.2 (consultare le Note di rilascio - XUnit 2.2: 19 febbraio 2017

La modifica del framework di destinazione del progetto di test in una versione> = 4.5.2 ha funzionato per me. Non è necessario modificare la versione del progetto che si sta testando, si tratta solo del progetto di test stesso.


5

Ho avuto lo stesso problema con Visual Studio 2019. Ho appena installato i seguenti pacchetti NuGet e il problema è stato risolto.

1). xUnit

2). xunit.runner.visualstudio

3). Microsoft.TestPlatform.TestHost

4). Microsoft.NET.Test.Sdk


3

Ciò può anche essere dovuto al fatto che la casella di controllo build non è selezionata per il progetto della piattaforma corrente nella configurazione build. Fai clic su Crea | Configuration Manager, quindi assicurati che i progetti di test abbiano un segno di spunta nella colonna build per la piattaforma che stai utilizzando (ad esempio 'x86').

Questa è stata sicuramente la soluzione che ha funzionato per me.


Voterei questo se fosse su stackoverflow.com/questions/16214684/… poiché questo non è specifico per xunit2 e un buon elemento della lista di controllo
Ruben Bartelink

3

Assicurarsi di non aver scritto i test unitari in una libreria di classi .NET Standard 2.0. Il runner visualstudio non supporta l'esecuzione di test nelle librerie di classe netstandard2.0 al momento della stesura di questo documento.

Controlla qui per la matrice di compatibilità di Test Runner:

https://xunit.github.io/#runners


3

Si è verificato un problema simile con VS che non ha scoperto i metodi di prova. Nel mio caso avevo la parola chiave statica con il metodo, che ho rimosso e ha funzionato.

[TestMethod]

Before: public static void Test1()

After: public void Test1()

1
Preferirei davvero che non ci fosse, dato che si tratta di test altrimenti corretti che non possono essere trovati in una particolare istanza di VS. Ne ho una risposta automatica per cui non è possibile scoprire un test xunit: stackoverflow.com/questions/16214684/… . Posso suggerirti di creare un motivo per cui non posso ritirare il mio test MSTest (se lo desideri da VS). (Come probabilmente saprai, questa particolare preoccupazione non si applica nemmeno a xUnit, che è un altro motivo per cui, per quanto utile, la tua risposta non appartiene qui)
Ruben Bartelink

MSTest non ha trovato i miei test perché il modificatore di accesso alla classe era interno.
Abdul Saboor,

3
  1. Chiudi tutte le istanze di Visual Studio
  2. Vai a% TEMP% \ VisualStudioTestExplorerExtensions \
  3. Elimina le cartelle correlate allo specrun
  4. Riprova

fammi sapere, grazie


2

Nel mio caso, ho avuto 2 diversi progetti di test nella soluzione. È stato possibile trovare i test del progetto 1, ma non è stato possibile eseguire i test del progetto 2. Ho scoperto che prima scaricando il test Progetto 1, quindi chiudendo VS> cancellando i miei file temporanei> riapri soluzione> ricostruisci, ho permesso a VS di scoprire i miei test del Progetto 2.

Suppongo che qualcosa debba essere in conflitto tra i due progetti di test e questo è stato il modo più rapido per farmi funzionare in pochi minuti. I nodi possono essere risolti in seguito :).


2

Soffrivo di questo problema da molto tempo.

  • Avevo circa 100 progetti in diverse versioni distribuite su server diversi.

  • L'aggiornamento di xunit dalla 2.2.0 alla 2.3.1 non era una soluzione perché la build non andava a buon fine in 2.3.1.

Quindi ho appena aggiornato xunit.runner.visualstudio alla 2.3.1 e tutto ha iniziato a funzionare bene. Ho usato questo comando nella mia console di gestione dei pacchetti per aggiornare il mio pacchetto xunit.runner.visualstudio

Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1

1

Il colpevole più comune per me è stato Visual Studio che ha cercato di eseguire i test utilizzando un'architettura diversa rispetto alla libreria che sta testando. Sfortunatamente ci sono più posti in cui sembra che ciò possa andare storto.

In VS 2017, prova a creare un file Run Settings, ad esempio Default.runsettingsnel tuo progetto di test. Se la tua lib principale è x64, il contenuto dovrebbe essere:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
  </RunConfiguration>
</RunSettings>

Quindi scegliere questo file da Test -> Impostazioni test -> Seleziona file impostazioni test.

Quindi, in Test -> Impostazioni test, Architettura processore predefinito, selezionare nuovamente l'architettura corretta.

Assicurati di pulire e costruire l'intera soluzione. Potrebbe essere necessario chiudere e riaprire la finestra Esplora test. Cerca eventuali errori aggiuntivi nella finestra Output -> Test, per ulteriori indizi sui tipi di architettura errati.

FYI voci aggiuntive Impostazioni test sono disponibili qui .


1

C'è un altro motivo che può causare Test Explorer che non mostra alcun test e ha a che fare con il nuovo .pdbformato di file portatile introdotto con Visual Studio 2017 / per .NET Core che può interrompere alcuni strumenti VS. (Background: vedi la segnalazione di bug "Mono.Cecil causa OutOfMemoryException con i nuovi PDB .csproj" .)

I tuoi test non sono stati trovati a causa del nuovo formato portatile .pdb(simboli di debug)?

  • Apri la finestra Output .
  • Modifica la selezione a discesa per Mostra output da a Test .
  • Se vedi un output simile al seguente (possibilmente ripetuto una volta per ciascuno dei tuoi test), allora hai il problema descritto in questa risposta:

    Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod>
    Array dimensions exceeded supported range.

In caso affermativo, procedere per risolvere il problema:

  • Apri le proprietà del progetto di test (seleziona il progetto di test in Esplora soluzioni e premi Alt+ Enter).
  • Passa alla scheda Build .
  • Fai clic sul pulsante Avanzate ... (situato alla fine della scheda).
  • Nella discesa marcata informazioni di debug , scegliere none, pdb-onlyo full, ma NON portable . È quest'ultima impostazione che non consente di trovare i test.
  • Fai clic su OK, pulisci e ricostruisci il tuo progetto. Se vuoi essere più sicuro, vai nella directory di output del tuo progetto di test e pulisci tutti i .pdbfile prima di ricostruire. Ora i tuoi test dovrebbero essere tornati.

1

Mi è successo quando ho fatto i miei primi tentativi di camminata con IntelliTest in VS 2017.

A volte, quando il progetto di test viene creato automaticamente da IntelliTest, il riferimento dell'assembly a Microsoft.ExtendedReflection( ... \ Programmi (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection. dll ) mancante. Una volta aggiunti, i test generati verranno visualizzati in Esplora esplorazioni dopo la ricompilazione.


1

Disclaimer: non si tratta di xunit con Visual Studio 2015, ma Visual Studio 2017 con un'applicazione di test unit UWP (MSTest). Sono arrivato a questa discussione cercando la stessa cosa, quindi forse qualcun altro farà lo stesso :)

La soluzione per me era aggiornare i pacchetti nuget per MSTest.TestAdapter e MSTest.TestFramework. Sembra che quando crei un'app di unit test per UWP non ottieni automaticamente le ultime versioni.


Suggerirei di fare una domanda con risposta autonoma poiché ho fatto è il modo migliore per sequestrare tali informazioni - sentiti libero di copiare incollare tutta la mia domanda e s / xUnit / MSTest / se pensi che abbia senso;)
Ruben Bartelink

1

Il mio problema è stato risolto installando il nuget xunit.runner.visualstudio


1

Nel mio caso ho più progetti di test nella stessa soluzione e solo uno dei progetti non visualizzava "Test Explorer"

Sono andato al "Gestisci pacchetto Nuget per soluzione" facendo clic con il tasto destro del mouse sulla soluzione.

Ho notato che nella scheda "Consolida" c'erano alcuni pacchetti nuget "Test" che non erano sincronizzati tra i progetti. Ho cliccato su "Installa" e sono comparsi i miei test mancanti.


1

Ho provato la maggior parte dei suggerimenti sopra e niente ha funzionato. Nel mio caso, faccio parte di una squadra e sono comparsi test per altri sviluppatori per la stessa soluzione. Quindi, ho provato a cancellare la mia cartella .vs, ma non ho avuto fortuna.

Ho finito per eliminare completamente la mia cartella locale e ri-clonare il repository. Questo mi ha risolto.


1

Ecco la soluzione che ha funzionato per noi. Non il migliore, ma forse uno può trarne beneficio.

Sfondo:

  • I nostri script sono stati sviluppati con VS 2013 e hanno utilizzato NUnit VS Adapter 2.1 ..
  • Di recente siamo passati a VS 2017 e quando si apre la stessa soluzione - test non verrà visualizzato in Test Explorer

Su Build vedremmo questo messaggio:

[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete

Soluzione (temporanea):

  • Disinstallare NUnit Adapter 3.10 ...
  • Installa NUnit VS Adapter 2.1 ..

Ora vengono mostrati i test.


Per favore, estrai la tua (almeno apparentemente) nuova domanda al proprio post per rendere questa una risposta chiara :)
geisterfurz007

... intitolato "perché NUnit TestAdapter v3 non vede i miei test NUnit v2? E a) ping qui b) e metti un" vedi anche <link> "in alto (anche se è leggermente tenue), ma farei come questa risposta rimossa in quanto non si adatta bene con xUnit v2 testsnel titolo
Ruben Bartelink,

0

Controlla anche se un file app.config completamente vuoto (completamente vuoto senza alcun markup) è all'interno del progetto di test. Questo è stato il colpevole nel mio caso.


0

Nel mio caso, ho creato una nuova "Configurazione della soluzione" come mostrato nell'immagine. Quindi, quando seleziono quello personalizzato come "Prod", per qualche motivo non riconosce TestMehods. Il passaggio a "Debug" risolve il problema

inserisci qui la descrizione dell'immagine


0

Non so se alcuni di voi usano anche JustMock, ma ho dovuto disabilitare il profiler in VS 2017 perché il rilevamento dei test funzionasse.


Hmmm. Se lo riattivi, fallisce di nuovo immediatamente?
Ruben Bartelink,

Sì. Se chiudo la soluzione, accendo il profiler e torno, il rilevamento del test fallisce.
chrisdrobison,
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.