Program Visual Studio 2013 nie wykrywa testów jednostkowych


Mam proste rozwiązanie w Visual Studio 2013, które składa się z jednego projektu internetowego, jednego projektu biblioteki i jednego projektu testu jednostkowego. Kiedy otwieram rozwiązanie i próbuję uruchomić testy jednostkowe, nie są one odnajdywane przez program Visual Studio. Aby uruchomić testy, próbuję wejść do menu i wybrać Test - & > Uruchom - & > Uruchom wszystkie testy lub otwórz okno eksploratora testów. Dzięki tym metodom Visual Studio nie wykrywa żadnych testów w rozwiązaniu.
Stwórz swój pierwszy prosty projekt testu jednostkowego i spróbuj uruchomić test, Visual Studio wiem, spójrz na test i mogę go uruchomić. Następnie, jeśli otworzę moje poprzednie rozwiązanie, Visual Studio wykrywa teraz wszystkie testy. Próbuję zapisać moje rozwiązanie, ale zamykam je i ponownie otwieram bez wcześniejszego budowania projektu testów jednostkowych. Visual Studio nie znajduje ponownie testów. To bardzo dziwne zachowanie i nie wiem, dlaczego tak się dzieje.
Kiedyś pracowałem sam nad tym projektem, używając kontroli wersji git zintegrowanej z podstawą zespołu Visual Studio. Visual Studio nie wykrywa, że ​​testy jednostkowe rozpoczynają się, gdy do projektu pojawia się nowy element i gdy muszę odtworzyć rozwiązanie za pomocą kontroli źródła w trybie online. Wcześniej wszystkie testy były zawsze otwarte w Visual Studio.
Do tworzenia testów jednostkowych używam biblioteki dll Microsoft.VisualStudio.QualityTools.UnitTestFramework. Moja wersja programu Visual Studio to Microsoft Visual Studio Express 2013 dla sieci Web w wersji 12.0.30723.00 Aktualizacja 3. Moja wersja platformy .net to 4.5.50938.
Wszystkie moje testy kończą się następująco:
[TestClass] 
public class Service1Test
{
[TestMethod]
public void Test1()
{
Assert.IsTrue(True);
}
}

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zauważyłem, że muszę od czasu do czasu zrobić, aby testy pokazały się prawidłowo.
  • Jeśli Twoje rozwiązanie znajduje się na bezpiecznym dysku, do którego potrzebujesz uprawnień administratora do odczytu/zapisu, czasami pojawia się tylko podzbiór testów. W takim przypadku zdecydowanie uruchom VS jako administrator.
  • Jeśli Twoje rozwiązanie jest 64-bitowe, upewnij się, że Test & > Ustawienia testu & > Domyślną architekturą procesora jest x64. Czasami jest instalowany na x86. Zainstaluj go na x64, a następnie odbuduj.
  • Czasami po prostu ponowne uruchomienie programu Visual Studio załatwia sprawę, ponieważ test eksploratora rozpocznie się ponownie.
  • Nie zapomnij o stworzeniu testu projektu/rozwiązania. (jeśli chcesz, aby został zbudowany z pozostałymi projektami, kliknij prawym przyciskiem myszy swoje rozwiązanie & > właściwości & > właściwości konfiguracji & > config & > zaznacz opcję „Kompiluj” dla projektu testowego)
  • Upewnij się, że testy znajdują się w sekcji
    public
    klasy testowej
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli używasz NUnit, najpierw pobierz adapter NUnit.
Przejdź do Narzędzia -> Rozszerzenia i aktualizacje… -> online -> wyszukaj „NUnit Test Adapter”.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Upewnij się, że klasa testowa jest
public
, aby można ją było znaleźć. A jeśli odwołujesz się do innej klasy, zrób to samo.
Ponadto, czasami, jeśli nie masz żadnych asercji lub nie ozdobisz testu
[TestMethod]
, test może nie zostać rozpoznany.
2 więcej rzeczy:
1) asynchroniczne testy jednostkowe są w najlepszym przypadku zabawne, ale wcale nie w najgorszym. Spojrzeć na

Ten artykuł
http://blog.stephencleary.com/ ... .html

Stephen Cleary

i trzymaj się od niej z daleka, jeśli cię interesuje.
2) Jeśli używasz NUnit i napotykasz te same problemy, pamiętaj, że jest to
[TestCase] ​​
dla Nunit, a nie
[TestMethod]
Powiedziawszy wszystkie powyższe, oto jest

artykuł
http://www.codeproject.com/Art ... nit-a
Opublikowałem na projekcie kodu, z
MSTest
i
NUnit
, na wypadek gdybyś chciał spróbować i upewnić się, że niczego nie brakuje.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Miałem ten sam problem, ale żadne inne rozwiązanie nie działało. Okazuje się, że korzystałem z frameworka NUnit 3 z adapterem 2.
Jeśli używasz NUnit 3, przejdź do sekcji rozszerzenia i aktualizacje i zainstaluj adapter testowy NUnit3.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mam ten problem od czasu do czasu. U mnie działa wyłączenie programu Visual Studio i przejście do folderu:
%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

i usuń jego zawartość.
Po otwarciu programu Visual Studio i ponownym załadowaniu projektu Eksplorator testów powinien zawierać testy
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Użytkownicy XUnit mogą zauważyć, że w oknie Eksploratora testów nie ma już listy testów. Aby testy były wykrywalne, spróbuj ponownie

ta ważna rada
https://xunit.github.io/docs/g ... tudio
wyróżnione poniżej.

Jeśli masz problemy z wykrywaniem lub uruchamianiem testów, możesz paść ofiarą uszkodzonej pamięci podręcznej modułu uruchamiającego w programie Visual Studio. Aby wyczyścić tę pamięć podręczną, zamknij wszystkie wystąpienia programu Visual Studio, a następnie usuń folder% TEMP% \ VisualStudioTestExplorerExtensions. i upewnij się, że projekt jest połączony tylko z jedną wersją pakietu NuGet programu Visual Studio runner (xunit.runner.visualstudio).

https://i.stack.imgur.com/a0EJD.png
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dla przyszłych pracowników Google miałem rzadki scenariusz, który to spowodował.
W mojej podstawowej klasie testowej miałem właściwość o nazwie TestContext. Spowodowało to naruszenie zastrzeżonej właściwości MSTest TestContext, co spowodowało, że wszystkie moje testy zostały ukryte przed VS/Resharper z wyjątkiem jednego (który nie dziedziczył z bazy).
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

dla mnie była to zmiana „konfiguracji rozwiązania” na Debugowanie (zamiast Release).
https://i.stack.imgur.com/ZCtFs.gif
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Mój problem polegał na tym, że moja metoda testu jednostkowego nie była

pusty

i pobierał parametry.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zauważyłem, że metody testów jednostkowych oznaczone jako
async void
nie są wykrywane przez test VS Explorer. Najwyraźniej dzieje się tak, ponieważ VS nie będzie mógł czekać na zakończenie testu i decydować, czy się powiedzie, czy nie. Jeśli absolutnie potrzebujesz metody testowej działającej asynchronicznie, spraw, aby zwracała zadanie, takie jak
async Task
.
Okazało się, że to rozwiązało problem.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj zbudować wszystkie projekty, takie jak MSIL (dowolny procesor) zamiast x86/x64. działało dla mnie dziwnie
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Chociaż rozwiązanie AndyG działa, rozwiązaniem długoterminowym może być ustawienie zmiennej środowiskowej PreferredToolArchitecture na „x64”:
Jak sprawić, by Visual Studio używał natywnego zestawu narzędzi amd64
https://coderoad.ru/19820718/
lub przez:
  • Panel sterowania | System i bezpieczeństwo | System/Zaawansowane preferencje systemowe | Zmienne środowiskowe
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = Native64Bit
  • PROCESSOR_ARCHITECTURE = x64
  • ProcessorArchitecture = x64
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Napotkałem ten sam problem i ponownie przypomniałem sobie (zdarzyło się to wcześniej), że wybranie opcji „Platforma mieszana” z menu platformy rozwiązań działa tak samo jak inne odpowiedzi.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Udało mi się dodać moje jako
public static void TestMethod1(){}

zacząłem działać, gdy tylko usunąłem statyczne ...
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przejdź do menedżera pakietów Nuget i pobierz adapter Nunit w następujący sposób.
https://i.stack.imgur.com/JFXRB.jpg
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

przejdź do menu projekt & > Configuration Manager sprawdza, czy platforma projektu testowego jest pozostałą częścią projektu i została przetestowana w kompilacji, a następnie odbudowana.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Właśnie wpadłem na to i nie widziałem przypadku takiego jak mój.
W pliku
.csproj
mojego projektu testowego NUnit prywatność referencyjna została ustawiona na
False
:
<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
<HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
<Private>False</Private>
</Reference>

Po ustawieniu
& < Private & >
na
True
wszystko zadziałało.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby testy były wyświetlane w oknie Eksploratora testów, musiałem zainstalować NUnit3 Test Adapter 3.0, który nie był dostępny w Menedżerze pakietów.
Pobrane z

https://visualstudiogallery.ms ... 22f2d
https://visualstudiogallery.ms ... 22f2d
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Miałem dokładnie ten sam problem.
Było to spowodowane niekompatybilną wersją NUnit, którą dodałem do mojego projektu (3.2.0) i zainstalowanym adapterem testowym (2.0.0).
Aby to naprawić, użyj opcji „Narzędzia & > Rozszerzenia i aktualizacje” i wyszukaj NUnit3 Test Adapter, a następnie znajdź moje testy.
Owacja
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Wystarczy zainstalować tylko ten pakiet:
NUnit TestAdapter
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Powiedzmy dla dobra argumentacji, że musisz użyć architektury X64 w swoim projekcie testowym, aby zależności zostały poprawnie zbudowane (jak w moim przypadku). Może zajść potrzeba zmiany domyślnej architektury procesora w menu

Test--test Settings
... Ustawienie tej opcji na X64 umożliwiło mojemu testowi eksploratora znalezienie moich testów przy użyciu Microsoft.VisualStudio.TestTools.UnitTesting.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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 - & > montaż. Następnie kliknij przycisk Zaawansowane w prawym dolnym rogu panelu. Zmień „Informacje debugowania:” na „pełne” i kliknij OK.
Oto zrzuty ekranu:
https://i.stack.imgur.com/pxwxF.jpg
https://i.stack.imgur.com/lzFQx.jpg
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli pobierzesz rozwiązanie Visual Studio (w moim przypadku VS 2015 Community) z witryny

zasób sieciowy

lub

katalog „Moje dokumenty”, który jest częścią ogólnej

zasobów, napotkasz ten problem. Rozwiązałem ten problem, przenosząc rozwiązanie i związane z nim projekty do folderu lokalnego.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Przepraszam za dodanie do długiej listy, ale miałem zupełnie inny problem.
Najpierw chciałbym wspomnieć, że odkryłem swój problem, klikając przycisk „Uruchom wszystko” w teście Eksploratora, a następnie oglądając okno danych wyjściowych kompilacji w programie Visual Studio. Musisz go aktywnie monitorować, ponieważ po tym komunikat znika.
Jeśli chodzi o problem, wygląda na to, że podczas skanowania testowego ładowana jest biblioteka DLL, a jej typy testów są wymienione. Powoduje to załadowanie łączy, a jeśli podczas tego procesu wystąpi jakakolwiek awaria, testy nie pojawią się w eksploratorze. Miałem dwa problemy uniemożliwiające pomyślne załadowanie testu DLL:
  • W pliku konfiguracyjnym nadal pozostawało przekierowanie powiązania (przekierowanie do niższej wersji NHiberate niż ta, do której odwołuje się projekt testowy).
  • Konflikt odniesienia do zespołu (nie można załadować odniesień poziomu 2). AsmSpy https://github.com/mikehadlow/AsmSpyNawiasem mówiąc, jest to świetne narzędzie do polowania na nie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W przypadku programu Visual Studio 2013.5 pomogło wyczyszczenie katalogu \ TestResults w rozwiązaniu. Program Visual Studio uszkodził plik mdf, który przechowuje wykryte testy, uniemożliwiając w ten sposób wykrycie testów jednostkowych.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się