AKTUALIZACJA: dodanie 2019; mechanizm integracji wykrywania / uruchamiania jest taki sam jak w latach 2017 i 2015, więc kluczowe rzeczy, które mogą pójść nie tak, są takie same.
Przeczytałem Dlaczego biegacz xUnit nie znajduje moich testów, co obejmuje powody, dla których xUnit nigdy nie byłby w stanie znaleźć twoich testów, ale mój problem jest inny - jestem pewien, że z moimi testami nie dzieje się nic subtelnego; (działały w innych środowiskach, wydaje się, że to tylko moja maszyna) - program Visual Studio Test Runner w programie Visual Studio 2015 [Community Edition] po prostu nie wyświetla żadnego z moich testów. Nie robię nic ekscytującego; testy są przeznaczone dla xUnit.net v2 na pulpicie.
Zajrzałem do okna Wyjście i nie widzę niczego w sekcji Test w Pokaż dane wyjściowe z kart.
źródło
Odpowiedzi:
Wyeliminuj wyjątki wykrywania z zapytań; przejdź do okna wyjściowego (Ctrl-Alt-O), a następnie przełącz wyjście pokazu z listy rozwijanej (Shift-Alt-S) na Testy i upewnij się, że nie ma żadnych wyjątków wykrywania
Test | Ustawienia testowe | Domyślna architektura procesora może pomóc, jeśli testy są specyficzne dla x86 / x64, a wykrywanie wyzwala wyjątki związane z bitowością, tj. Nie AnyCpu
Jak zasugerowano w tej odpowiedzi (zagłosuj, jeśli technika pomaga), uruchomienie programu uruchamiającego konsolę ( instrukcje ) może być dobrym sprawdzeniem krzyżowym, aby wyeliminować inne możliwości, np. Zniekształcone pliki konfiguracyjne: -
UWAGA
xunit.runner.console
Pakiet jest przestarzały - kiedy otrzymasz rzeczy działające w VS, będziesz mógłdotnet test
je uruchamiać również w kontekstach CIPrzeczytaj dokumentację - jest wyczerpująca, aktualna, zawiera informacje dotyczące rozwiązywania problemów i zajmuje się PR: -
Pomogły mi następujące kroki:
(Tylko jeśli podejrzewasz, że na twoim komputerze jest poważny bałagan - generalnie bardziej powszechnym przypadkiem jest to, że integracja ze studiem Visual Studio nie została jeszcze zainstalowana)
Postępuj
DEL %TEMP%\VisualStudioTestExplorerExtensions
zgodnie z zaleceniami: -PS> del $env:TEMP\VisualStudioTestExplorerExtensions
Zainstaluj pakiet NuGet
xunit.runner.visualstudio
we wszystkich projektach testowychPakiet:
Musisz mieć w swoim
paket.dependencies
:nuget xunit.runner.visualstudio version_in_path: true
Zauważ, że
version_in_path: true
bit jest ważnyNuget: przejdź do konsoli Menedżera pakietów (Alt-T, N, O) i
Przebuduj, aby upewnić się, że
xunit.runner
kończy się w katalogu wyjściowymZamknij Eksploratora testów <- to był dla mnie brakujący bit
Ponownie otwórz eksplorator testów (Alt-S, W, T)
Uruchom wszystkie testy (Ctrl R, A)
źródło
%TEMP%\VisualStudioTestExplorerExtensions
i ponowne uruchomienie VS wreszcie zadziałało!Musiałem zmienić Test Settings po zmianie procesora projektów testowych na x64. Następnie testy zostały ponownie wykryte.
źródło
Żadne z powyższych rozwiązań nie działało dla mnie (dotnetcore 1.1, VS2017). Oto, co to naprawiło:
Microsoft.TestPlatform.TestHost
Microsoft.NET.Test.Sdk
Są to dodatkowe pakiety, które zainstalowałem wcześniej:
źródło
TestPlatform.TestHost
tylko podczas migracji z VS 2017 do VS 2019.Zainstaluj
xunit.runner.visualstudio
pakiet dla projektu testowegoźródło
Wykonaj następujące kroki:
MsTest.TestAdapter
iMsTest.TestFramework
dll's
odnugget package manager
.źródło
%TEMP%\VisualStudioTestExplorerExtensions
i nadal czasami musiałem uruchamiać testy z konsoli.Zmagałem się z tym przez całe popołudnie podczas pracy z projektem ASP Core i xUnit 2.2.0. Rozwiązaniem dla mnie było dodanie odwołania do
Microsoft.DotNet.InternalAbstractions
Dowiedziałem się o tym podczas próby ręcznego uruchomienia projektu testowego,
dotnet test
który zakończył się niepowodzeniem, ale zgłosił, żeInternalAbstractions
go brakuje. Nie widziałem tego błędu w oknie wyników testu, gdy automatyczne wykrywanie nie powiodło się. Jedyną informacją, jaką zobaczyłem w oknie wykrywania, był kod powrotu, który wtedy nic dla mnie nie znaczył, ale z perspektywy czasu prawdopodobnie wskazywał na błąd.źródło
Zdarzyło mi się to kilka razy - kiedy czyszczę projekt i buduję go ponownie, zwykle jest dobrze.
źródło
Upewnij się, że Twoja klasa testowa jest publiczna .
źródło
Powodem w moim przypadku było to, że kompilacja docelowa nie była taka sama między debuggerem projektu a uruchomieniem testów. Aby ujednolicić te elementy:
Gdy będą identyczne, odbuduj swoje rozwiązanie, a pojawią się metody testowe.
źródło
Po spędzeniu 2 dni ... żadna z powyższych nie zadziałała. Jedynym „rozwiązaniem” było: Przejdź do właściwości projektu -> zakładka Build. Następnie kliknij przycisk Zaawansowane w prawym dolnym rogu panelu. Zmień „Informacje debugowania:” na „pełne” i kliknij OK.
Oto zrzuty ekranu:
źródło
Używam xUnit 2.2.0.
Mój problem polegał na tym, że moje rozwiązanie nie mogło znaleźć niektórych bibliotek DLL i
app.config
próbowało je rozwiązać. Błąd nie był wyświetlany w oknie danych wyjściowych testu w programie Visual Studio.Udało mi się zidentyfikować błąd, gdy instalowałem
xunit.runner.console
i próbowałem uruchomić testy za pomocą wiersza poleceń.Jak uruchomić testy xunit w CLI .
źródło
Mogę podać rozwiązanie problemu krawędzi, z którym spotkałem się kilka dni temu. Nie będzie to rozwiązanie pasujące do wszystkich opisanych powyżej scenariuszy, jednak w przypadku skrajnego przypadku kazałem to naprawić.
Miałem ten sam problem z najnowszym VS 2017 (wersja 15.5.7) i XUnit 2.3.1. Pakiet xunit.runner.visualstudio został zainstalowany, jednak testy nie pojawiły się we wbudowanym eksploratorze testów VisualStudio.
Pracowałem nad starszym projektem, który był przeznaczony dla platformy .NET Framework 4.5. Jednak począwszy od wersji 2.2. XUnit nie obsługuje platform .NET niższych niż 4.5.2 (zobacz Informacje o wersji - XUnit 2.2: 19 lutego 2017 r.
Zmiana struktury docelowej projektu testowego na wersję> = 4.5.2 działała dla mnie. Nie musisz zmieniać wersji projektu, który testujesz, chodzi tylko o sam projekt testowy.
źródło
Miałem ten sam problem z Visual Studio 2019. Właśnie zainstalowałem następujące pakiety NuGet i problem został rozwiązany.
1). xUnit
2). xunit.runner.visualstudio
3). Microsoft.TestPlatform.TestHost
4). Microsoft.NET.Test.Sdk
źródło
Może to być również spowodowane tym, że pole wyboru kompilacji nie jest zaznaczone dla bieżącego projektu platformy w konfiguracji kompilacji. Kliknij Buduj | Menedżer konfiguracji, a następnie upewnij się, że projekty testowe mają zaznaczenie w kolumnie kompilacji dla używanej platformy (na przykład „x86”).
To było zdecydowanie rozwiązanie, które się sprawdziło.
źródło
Upewnij się, że testy jednostkowe nie zostały zapisane w bibliotece klas .NET Standard 2.0. Visualstudio runner nie obsługuje uruchamiania testów w bibliotekach klas netstandard2.0 w chwili pisania tego tekstu.
Sprawdź tutaj macierz zgodności narzędzia Test Runner:
https://xunit.github.io/#runners
źródło
Podobny problem napotkał VS, który nie odkrył metod testowych. W moim przypadku miałem słowo kluczowe static z metodą, którą usunąłem i zadziałało.
źródło
daj mi znać, dzięki
źródło
W moim przypadku miałem w rozwiązaniu 2 różne projekty testowe. Można znaleźć testy projektu 1, ale nie można znaleźć testów projektu 2. Okazało się, że najpierw rozładowanie projektu testowego 1, a następnie zamknięcie VS> wyczyszczenie plików tymczasowych> ponowne otwarcie rozwiązania> odbudowanie umożliwiło programowi VS odnalezienie moich testów w ramach projektu 2.
Zakładam, że coś musi być w konflikcie między dwoma projektami testowymi i był to najszybszy sposób, aby uruchomić mnie w ciągu kilku minut. Załamania można rozwiązać później :).
źródło
Długo cierpiałem na ten problem.
Miałem około 100 projektów, różne wersje były wdrażane na innym serwerze.
Aktualizacja xunit z 2.2.0 do 2.3.1 nie była rozwiązaniem, ponieważ kompilacja kończyła się niepowodzeniem w 2.3.1.
Potem właśnie zaktualizowałem xunit.runner.visualstudio do wersji 2.3.1 i wszystko zaczęło działać dobrze. Użyłem tego polecenia w mojej konsoli menedżera pakietów, aby zaktualizować pakiet xunit.runner.visualstudio
źródło
Najczęstszym winowajcą był dla mnie program Visual Studio, który próbował uruchomić testy przy użyciu innej architektury niż testowana biblioteka. Niestety jest wiele miejsc, w których wydaje się, że może to się nie udać.
W VS 2017 spróbuj utworzyć plik Run Settings, np.
Default.runsettings
W projekcie testowym. Jeśli twoja główna biblioteka to x64, zawartość powinna wyglądać następująco:Następnie wybierz ten plik z Test -> Ustawienia testu -> Wybierz plik ustawień testu.
Następnie w obszarze Test -> Test Settings, Default Processor Architecture, wybierz ponownie poprawną architekturę.
Pamiętaj, aby wyczyścić i zbudować całe rozwiązanie. Konieczne może być zamknięcie i ponowne otwarcie okna Eksploratora testów. Poszukaj dodatkowych błędów w oknie Output -> Test, aby uzyskać więcej wskazówek dotyczących nieprawidłowych typów architektury.
Dodatkowe wpisy dotyczące ustawień testu FYI można znaleźć tutaj .
źródło
Jest jeszcze jeden powód, dla którego Eksplorator testów nie wyświetla żadnych testów i ma to związek z nowym przenośnym
.pdb
formatem plików wprowadzonym w programie Visual Studio 2017 / dla platformy .NET Core, który może zepsuć niektóre narzędzia VS. (Tło: zobacz raport o błędzie „Mono.Cecil powoduje wyjątek OutOfMemoryException z nowymi plikami PDB .csproj” ).Czy testy nie zostały znalezione z powodu nowego przenośnego
.pdb
formatu (symboli debugowania)?Jeśli zobaczysz wyniki podobne do następujących (prawdopodobnie powtórzone raz dla każdego testu), oznacza to, że masz problem opisany w tej odpowiedzi:
Jeśli tak, zrób to, aby rozwiązać problem:
none
,pdb-only
czyfull
, ale NIEportable
. To ostatnie ustawienie powoduje, że testy nie zostaną znalezione..pdb
pliki przed przebudową. Teraz twoje testy powinny wrócić.źródło
Przydarz mi się, gdy podjąłem pierwsze próby chodzenia z IntelliTestem w VS 2017.
Czasami, gdy projekt testowy jest tworzony automatycznie przez IntelliTest, odwołanie do zestawu
Microsoft.ExtendedReflection
( ... \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection. dll ) brakuje. Po dodaniu wygenerowane testy pojawią się w eksploratorze testów po ponownej kompilacji.źródło
Zastrzeżenie: nie chodzi o xunit z Visual Studio 2015, ale Visual Studio 2017 z aplikacją do testów jednostkowych UWP (MSTest). Dotarłem do tego wątku szukając tego samego, więc może ktoś inny zrobi to samo :)
Rozwiązaniem dla mnie było zaktualizowanie pakietów NuGet dla MSTest.TestAdapter i MSTest.TestFramework. Wygląda na to, że podczas tworzenia aplikacji do testów jednostkowych dla platformy UWP nie otrzymujesz automatycznie najnowszych wersji.
źródło
Mój problem został rozwiązany przez zainstalowanie nuget xunit.runner.visualstudio
źródło
W moim przypadku mam wiele projektów testowych w tym samym rozwiązaniu, a tylko jeden z projektów nie wyświetlał „Eksploratora testów”
Poszedłem do „Zarządzaj pakietem Nuget w poszukiwaniu rozwiązania”, klikając prawym przyciskiem myszy rozwiązanie.
Zauważyłem, że na karcie „Konsolidacja” było kilka pakietów NuGet „Testuj”, które nie były zsynchronizowane między projektami. Kliknąłem „Zainstaluj” i pojawiły się brakujące testy.
źródło
Wypróbowałem większość powyższych sugestii i nic nie działało. W moim przypadku jestem w zespole i u innych deweloperów pojawiały się testy tego samego rozwiązania. Więc próbowałem po prostu usunąć mój folder .vs, ale też bez powodzenia.
Skończyło się na całkowitym usunięciu mojego folderu lokalnego i ponownym sklonowaniu repozytorium. To mnie rozwiązało.
źródło
Oto rozwiązanie, które dla nas zadziałało. Nie najlepszy, ale może warto.
Tło:
Po kompilacji zobaczymy następujący komunikat:
Rozwiązanie (tymczasowe):
Teraz testy są pokazane.
źródło
xUnit v2 tests
do tytułu.Sprawdź również, czy całkowicie pusty plik app.config (całkowicie pusty, bez żadnych znaczników) znajduje się w projekcie testowym. To był winowajca w moim przypadku.
źródło
W moim przypadku utworzyłem nową „Konfigurację rozwiązania”, jak pokazano na obrazku. Więc kiedy wybieram mój niestandardowy jako „Prod”, z jakiegoś powodu nie rozpoznaje on TestMehods. Zmiana z powrotem na „Debuguj” rozwiązuje problem
źródło
Nie wiem, czy niektórzy z was również używają JustMock, ale musiałem wyłączyć profiler w VS 2017, aby wykrywanie testów działało.
źródło