Ik heb een xUnit.net-test als volgt:
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
De xUnit-plug-in voor VS 2012 zegt:
Geen tests gevonden om uit te voeren.
TestDriven.net voert het prima uit maar vermeldt iets over ad hoc:
1 geslaagd, 0 mislukt, 0 overgeslagen (zie ‘Takenlijst’), duurde 0,47 seconden (ad hoc)
TeamCity, xunit.gui.exe
en xunit.console.exe
en Visual Studio kunnen TestMethod
ook niet vinden
(Ik heb xunit.runner.visualstudio
geïnstalleerd en VS ziet enkele tests.)
Wat geeft?
Antwoord 1, autoriteit 100%
TL;DR uw testklassen moetenpublic
zijn (maar uw testmethoden kunnen private
en/ of static
)
Om redenen van efficiëntie hebben de auteurs van xUnit ervoor gekozen om BindingFlags.NonPublic
niet te gebruiken bij het zoeken naar testklassen in de runner (de MSIL-metadatatabellen indexeren private
(/internal
) klassen in dezelfde mate, vandaar dat er een significant prestatieverschil is in de relatieve efficiëntie die Reflection kan bereiken).
Als gevolg van het bovenstaande betekent het feit dat uw class
private
is, dat deze niet wordt opgehaald.
Het feit dat de testmethode private
en static
is, is prima – xUnit by design sinds 1.0 heeft beide aspecten ondersteund.
Merk op dat de Visual Studio xUnit Runner-extensie, xunit.console.exe
(en de GUI), de xunit
MSBuild-taak, Resharper en CodeRush allemaal consistent zijn in het respecteren dit (hoewel ze [vooral de laatste twee] aantoonbaar meer zouden kunnen doen om te markeren wanneer een testklasse (dwz klasse [mogelijk indirect] die Fact
-afgeleide annoties bevat) private
is) .
De reden waarom TestDriven.net uw test uitvoert, is dat de auteur van TestDriven.net veel moeite heeft gedaan om het gewoon te laten werken. Het gebruikt intern een speciale Test Runner-wrapper/shim (de Adhoc Runner genoemd) om uw test uit te voeren. Houd er rekening mee dat de methode eigenlijk niet wordt uitgevoerd via de xUnit.net-runner en dat daarom alle attributen die u op uw test zet die bijwerkingen hebben, niet worden geactiveerd.
Met name NUnit (en ik ben er vrij zeker van dat MSTest) gebruiktprivéreflectie [en haalt daarom tests op in private
lessen], wat waarschijnlijk de reden is waarom het nooit een belangrijk om je eerst zorgen over te maken.
Opmerking: een neveneffect / truc die hierdoor mogelijk wordt gemaakt, is dat u een testklasse private
kunt maken als een snelle manier om alle tests in een testklasse te Skip
pingen [ en alle geneste klassen]. (Helaas zijn de gevallen op deze planeet waarin dit onbedoeld wordt gebruikt, veel groter dan de opzettelijke gevallen hiervan!)
Antwoord 2, autoriteit 43%
Dit antwoord is voor VS 2013, maar de stappen zijn in wezen hetzelfde voor VS 2012. Dit geldt voor het uitvoeren via ReSharper’s unit test functionaliteit.
-
Installeer de xUnit.net runner voor Visual Studio 2013 (wees voorzichtig bij het uitvoeren van Visual Studio als beheerder, anders worden de tests mogelijk niet uitgevoerd wanneer de IDE wordt uitgevoerd als niet-beheerder):
a. Ga vanuit Visual Studio 2013 naar Tools -> Uitbreidingen en updates -> Online
b. Zoek naar xUnit.net runner voor Visual Studio 2012 en 2013
c. Download (installeer) het dan. Als u een upgrade uitvoert naar VS 2013 vanuit VS 2012, wordt aangeraden dit te verwijderen en vervolgens opnieuw te installeren.
d. Start Visual Studio opnieuw.
-
Als ReSharper is geïnstalleerd, installeer dan de xUnit.net testrunner-plug-in :
(Opmerking: sinds resharper 2016.1, Xunit-ondersteuning is ingebouwd in resharper , wat betekent dat de XUNIT-plug-in niet langer nodig is.)
a. Navigeer in Visual Studio 2013: Resharper – & GT; Extension Manager.
b. Selecteer aan de linkerkant online.
c. Zoek naar “xunit.net”. Selecteer de “Xunit.net-testondersteuning”. Klik op Installeren.
d. Start Visual Studio 2013 opnieuw.
-
“Reinig” de oplossing
a. Klik in de IDE, in Solution Explorer, klik met de rechtermuisknop op de oplossing en kies “Reinig”.
b. Opnieuw compileren.
c. Nu, wanneer u met de rechtermuisknop op een
[Fact]
ATTIBUT] klikt, selecteert u Resharper’s “Run Unit-tests” (in tegenstelling tot de standaard “Run Tests”)
Problemen oplossen met XUNIT:
-
Als problemen met de [FACT] -tests met XUNIT blijven bestaan, kan dit
nodig zijn om het xunit-pakket handmatig te verwijderen van elke / al het
volgende mappen (Review Content voor de XUNIT DLLS, DAN DAN
XUNIT-map indien gevonden):-
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\
-
C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\
-
-
Probeer opnieuw opnieuw te installeren en opnieuw te installeren en opnieuw te installeren
xunitcontrib-bibliotheek (XUNIT.net-testondersteuning). Ik heb een keer opgemerkt
Wanneer het niet installeren, knipperen enkele foutmeldingen voorbij. Ik greep een
Screen-shot op één punt en het vermeldt:- Toegang tot het pad
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\ReSharper\v8.1\plugins\xunit.dll
wordt geweigerd. - … en hetzelfde voor de andere DLL’s in die directory
- Toegang tot het pad
Verwijder dit om dit op te lossen, de C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\
map na het verwijderen van visuele studio , voer vervolgens Visual Studio uit als niet-beheerder en installeer het opnieuw installeren via Resharper (Resharper – & GT; Extension Manager)
Antwoord 3, Autoriteit 18%
van http://xunit.github.io/docs/getting- Begonnen-Desktop.html # Run-Tests-VisualStudio :
Als u problemen hebt met het ontdekken of uitvoeren van tests, kunt u een
slachtoffer van een beschadigde runner-cache binnen visuele studio. Om dit te wissen
Cache, sluit alle gevallen van visuele studio af en verwijder vervolgens de
Map% Temp% \ VisualstudiotestExplorereXteSions. Zorg er ook voor dat je
Project is alleen gekoppeld aan een enkele versie van de Visual Studio
Runner Nuget-pakket (xunit.runner.visualstudio).
Antwoord 4, Autoriteit 14%
Ik had hetzelfde probleem in VS2017 RC, .NET Core 1.1-project. Xunit.Runner bijwerken werkte voor mij,
Install-Package xunit.runner.visualstudio
Antwoord 5, Autoriteit 6%
(Zoals bedoeld door @Kyle in de opmerkingen over het andere antwoord) dezelfde No tests found to run
-bericht te laten uitvoeren, kan het gevolg zijn van het gebruik van Nuget om Xunit.dll te krijgen en met versie 2.0 te eindigen. 0 (die momenteel is gemarkeerd als prerelease als een kernfunctionaliteit zoals het ontdekken van V1-tests enz. In die tak moet worden geïmplementeerd).
De resolutie in dit geval is om alleen stabiel versies te selecteren (in tegenstelling tot inclusief Prerelective ) in de Nuget Package Manager.
Antwoord 6, Autoriteit 4%
In mijn geval, om tests te zien, moest ik de volgende stappen invullen:
(Alle geïnstalleerd via Nuget Package Manager)
- Installeer
xUnit
V2.0.50727 - installeren
xUnit.extensions
v2.0.50727 - Navigeer naar de volgende link en volg de stappen die in de documentatie worden geschetst: http://xunit.github.io/docs/Running-tests-in-vs.html
Ik gebruik Visual Studio 2013 Premium. (Resharper niet geïnstalleerd)
Antwoord 7, Autoriteit 4%
Voor mij was de combinatie van de namen van mijn testklasse en testmethode te lang; xUnit lijkt een limiet te hebben voor deze combinatie.
Door de naam van alleende testmethode in te korten, kon xUnit die ene test ontdekken. Door de naam van de hele klassein te korten, kon xUnit alle tests in de klas ontdekken.
Drempel van klassenaam + methodenaam lijkt 172 tekens te zijn.
Antwoord 8, autoriteit 4%
Ik heb al een tijdje dit probleem met .NET Core waarbij een testklasse of een testmethode niet wordt ontdekt. De volgende oplossing werkt voor mij:
- Open een opdrachtpromptvenster.
- Verander naar de projectmap.
-
Bouw het project met de volgende opdracht:
dotnet build
OPMERKING: bouwen vanuit Visual Studio.NET werkt niet! <<<<<<<<<<< BELANGRIJK!
- Voer de tests uit: Test –> Uitvoeren –> Alles testen – CTRL+R +A (hiermee worden de nieuwe test(s) ontdekt – maar niet de nieuwe test(s).
- Voer de tests opnieuw uit.