Dlaczego xUnit Runner nie znajduje moich testów
Mam xUnit.net badanie w następujący sposób:
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
Wtyczka xUnit dla VS 2012 mówi:
Nie znaleziono żadnych testów.
TestDriven.net działa dobrze ale wspomina coś o Ad hoc :
1 przekazany, 0 nieudany, 0 pominięty( zobacz 'Lista zadań'), trwało 0.47 sekundy (Ad hoc)
TeamCity, xunit.gui.exe
i xunit.console.exe
oraz Visual Studio również nie mogą znaleźć TestMethod
(mam xunit.runner.visualstudio
zainstalowane I VS ogląda kilka testów.)
Co daje?
8 answers
TL; DR your Test Classes musi być public
(ale twoje metody badań mogą być private
i / lub static
)
Ze względu na efektywność, autorzy xUnit zdecydowali się nie używać BindingFlags.NonPublic
podczas wyszukiwania klas testowych w programie runner (tabele metadanych MSIL nie indeksują private
(/internal
) klasy w tym samym stopniu stąd istnieje znacząca różnica w wydajności względnej, którą można w ten sposób osiągnąć).
w wyniku powyżej fakt, że twoje class
jest private
oznacza, że nie zostanie odebrane.
Fakt, że metoda testowa to private
i static
jest w porządku-xUnit od wersji 1.0 wspiera oba te aspekty.
Zauważ, że Visual Studio xUnit Runner extension, xunit.console.exe
(I GUI), xunit
MSBuild task, Resharper i CodeRush są konsekwentne w honorowaniu tego (chociaż prawdopodobnie [zwłaszcza te dwa ostatnie] mogą zrobić więcej, aby oznaczyć klasę testową (tj. Klasa [potencjalnie pośrednio] zawierająca Fact
-pochodne) to private
).
Powód TestDriven.net prowadzi twój test jest to, że autor TestDriven.net włożył wiele wysiłku, aby to po prostu działało. Wewnętrznie używa specjalnej owijki/podkładki testowej (zwanej adhoc Runner) do przeprowadzenia testu. Należy pamiętać, że metoda ta w rzeczywistości nie jest uruchamiana poprzez xUnit.net biegacza i stąd wszelkie atrybuty, które umieścisz w swoim teście, które mają skutki uboczne, nie będą / align = "left" /
Zwłaszcza NUnit (i jestem prawie pewien MSTest) czy używać prywatnej refleksji [i stąd pick Up testów w klasach private
i prawdopodobnie dlatego nigdy nie wydawało się ważne, aby martwić się wcześniej.
Uwaga: efektem ubocznym / trikiem włączonym przez to jest to, że możesz utworzyć klasę testową private
jako szybki sposób Skip
pingowania wszystkich testów w klasie testowej [i dowolnych klas zagnieżdżonych]. (Niestety przypadki na tej planecie użycia tego nieumyślnie znacznie przewyższają zamierzone przypadki tego jednak!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-09 10:38:31
Ta odpowiedź dotyczy VS 2013, ale kroki są zasadniczo takie same dla VS 2012. Dotyczy to uruchomienia przez funkcji testu jednostkowego Resharp .
-
Zainstaluj xUnit.net runner dla Visual Studio 2013 (należy uważać, uruchamiając Visual Studio jako Administrator, lub testy mogą nie działać podczas uruchamiania IDE jako nie-Administrator): {]}
A. z poziomu Visual Studio 2013 przejdź do Narzędzia -> Rozszerzenia i aktualizacje - > Online
B. Szukaj xUnit.net biegacz dla Visual Studio 2012 i 2013
C. Następnie Pobierz (zainstaluj) go. W przypadku aktualizacji do VS 2013 Z VS 2012, sugeruje się, że należy to odinstalować, a następnie ponownie zainstalować.
D. Uruchom Ponownie Visual Studio. -
Jeśli ReSharper jest zainstalowany, zainstaluj xUnit.net test runner plugin:
A. W Visual Studio 2013 Nawigacja: Resharper - > Extension Manager.
B. Po lewej stronie wybierz opcję Online.
C. Szukaj "xunit.net". Wybierz "xUnit.net badanie Wsparcie". Kliknij Zainstaluj.
D. Restart Visual Studio 2013.
-
"Wyczyść" roztwór
A. w IDE, w Eksploratorze rozwiązań, kliknij prawym przyciskiem myszy rozwiązanie i wybierz "Clean".
B. Re-compile.
Po kliknięciu prawym przyciskiem myszy atrybutu[Fact]
wybierz opcję ReSharper " Uruchom testy jednostkowe "(w przeciwieństwie do domyślnego"Uruchom testy")
Rozwiązywanie problemów z uruchomieniem z XUnit:
-
Jeśli problemy z uruchomieniem [fakt] testy z XUnit utrzymują się, może konieczne jest ręczne usunięcie pakietu xUnit z dowolnego / wszystkich następujące foldery (przejrzyj zawartość bibliotek DLL xUnit, a następnie usuń xUnit folder if found):
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\
C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\
-
Jeśli chodzi o ReSharper, spróbuj odłączyć i ponownie zainstalować
biblioteka xunitcontrib (xUnit.net wsparcie testowe). Zauważyłam kiedyś
po rozpakowaniu niektóre komunikaty o błędach migają obok. Złapałem
screen-shot at jeden punkt, a wymienił:
- dostęp do ścieżki
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\ReSharper\v8.1\plugins\xunit.dll
odmawiam. - ... i to samo dla innych bibliotek DLL w tym katalogu
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\
Po odinstalowaniu z Visual Studio, a następnie uruchom Visual Studio jako nie-administrator i ponownie zainstaluj za pomocą ReSharper (Resharper -> Extension Manager) - dostęp do ścieżki
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-16 19:17:23
Z http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio :
Jeśli masz problemy z wykrywaniem lub uruchamianiem testów, możesz być ofiara uszkodzonej pamięci podręcznej biegacza w Visual Studio. Aby to wyczyścić pamięci podręcznej, wyłącz wszystkie instancje Visual Studio, a następnie usuń folder %TEMP % \VisualStudioTestExplorerExtensions. Również upewnij się, że Twój projekt jest powiązany tylko z jedną wersją Visual Studio pakiet runner NuGet (xunit.uciekinier.visualstudio).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-19 08:09:51
Miałem ten sam problem w projekcie VS2017 RC,. NET core 1.1. Aktualizacja xunit.runner pracował dla mnie,
Install-Package xunit.runner.visualstudio
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-06 00:49:23
(Jak wspomina @Kyle w komentarzach do drugiej odpowiedzi) ta sama wiadomość No tests found to run
może wynikać z użycia NuGet do uzyskania xUnit.dll, a kończąc na wersji 2.0.0 (która jest obecnie oznaczona jako wersja wstępna jako niektóre podstawowe funkcje, takie jak odkrywanie testów v1 itp. nie został jeszcze wdrożony w tej branży).
Rozwiązaniem w tym przypadku jest wybranie stabilnych tylkowersji (w przeciwieństwie do Include Prerelease) w menedżerze pakietów NuGet.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 11:40:47
Dla mnie kombinacja moich klas testowych i nazw metod testowych była zbyt długa; xUnit wydaje się mieć pewne ograniczenia w tej kombinacji.
Skrócenie nazwy Tylko Metoda badania pozwoliła xUnit odkryć ten pojedynczy test. Skrócenie nazwy całej klasy pozwoliło xUnit odkryć wszystkie testy w klasie.
Próg nazwy klasy + nazwa metody wynosi 172 znaki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-09 15:05:51
W moim przypadku, aby zobaczyć jakiekolwiek testy, musiałem wykonać następujące kroki:
(wszystkie zainstalowane przez NuGet Package Manager)
- Install
xUnit
v2. 0. 50727 - Install
xUnit.extensions
v2. 0. 50727 - przejdź do poniższego linku i wykonaj kroki opisane w dokumentacji: http://xunit.github.io/docs/running-tests-in-vs.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-10 11:55:11
Od jakiegoś czasu mam problem z. Net Core, gdzie Klasa testowa lub metoda testowa nie są odkrywane. Dla mnie działa następująca poprawka:
- Otwórz okno wiersza polecenia.
- Zmiana katalogu projektu.
-
Zbuduj projekt uruchamiając następujące polecenie:
dotnet build
Uwaga: budowanie z Visual Studio.NET nie zadziała! Ważne!
- Uruchom testy: Test -- > Uruchom -- > Test All-CTRL + R +A (spowoduje to wykrycie nowego (- ych) testu (- ów) - ale nie uruchomi nowego (- ych) testu (- ów).
- Uruchom testy jeszcze raz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-07 19:10:25