Mam klasę testową, a poniżej zamieściłem przykładowy test z klasy testowej
namespace AdminPortal.Tests.Controller_Test.Customer
{
[TestClass]
public class BusinessUnitControllerTests
{
private IBusinessUnitRepository _mockBusinessUnitRepository;
private BusinessUnitController _controller;
[TestInitialize]
public void TestInitialize()
{
_mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
_controller = new BusinessUnitController(_mockBusinessUnitRepository);
}
[TestCleanup]
public void TestCleanup()
{
_mockBusinessUnitRepository = null;
_controller.Dispose();
_controller = null;
}
#region Index Action Tests
[TestMethod]
public void Index_Action_Calls_GetAllBusinessUnit()
{
_mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());
_controller.Index();
_mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
}
}
}
Po uruchomieniu projektu pojawia się następujący ekran
Sprawdziłem referencje i projekt testowy ma odniesienie do projektu głównego. Masz pojęcie, dlaczego testy nie działają lub mówią, że nie są rozstrzygające?
Edycja 1:
Widziałem tutaj post i zmieniłem domyślną architekturę procesora w ustawieniach mojego testu na X64, ale nadal nie działa.
c#
asp.net-mvc
asp.net-mvc-4
unit-testing
resharper
Cybercop
źródło
źródło
Odpowiedzi:
Na wszelki wypadek żadna z powyższych opcji nie zadziałała dla nikogo, naprawiłem moje wystąpienie tego błędu, zauważając uszkodzony wpis w mojej aplikacji App.Config z powodu brakującego pakietu NuGet w projekcie testowym.
źródło
<configSections>
.Dla mnie było to dość frustrujące, ale przynajmniej znalazłem rozwiązanie dla mojego przypadku:
Jeśli metoda TestMethod jest asynchroniczna, nie może zostać unieważniona. MUSI zwrócić Task.
Mam nadzieję, że to komuś pomoże :)
źródło
Miałem ten sam problem z resharper i poprawiłem ten błąd, zmieniając opcję:
Resharper => Opcje => Narzędzia => Testy jednostkowe
Musiałem tylko odznaczyć opcję „Testowane zestawy kopiowania w tle”
źródło
To był problem Resharper. W opcjach Resharper-> Narzędzia-> MSTEST, odznaczyłem Use Legacy Runner i teraz działa.
źródło
Miałem ten problem i okazało się, że jest taki sam jak ten tutaj . Ta odpowiedź rozwiązała problem za mnie .
Drugi raz napotkałem ten problem, było to spowodowane znakiem ampersand w ścieżce pliku do projektu, w którym znajdują się testy. Działa dobrze z programem do uruchamiania testów ReSharper, ale nie z dotCover. Usuń znak ampersand ze ścieżki pliku.
To potwierdzony błąd dotCover.
źródło
U mnie samo wyczyszczenie i odbudowanie rozwiązania naprawiło to.
źródło
Dla mnie problemem był uszkodzony plik XML ustawień NUnit / ReSharper (z powodu nieoczekiwanego braku zasilania).
Aby zidentyfikować błąd, który uruchomiłem Visual Studio za pomocą tego polecenia :
Analiza pliku ujawniła następujący wyjątek:
Zauważ, że to NIE jest to plik app.config projektu testowego!
Szybkie googling wokół zidentyfikowano następujące plik jako sprawcy:
Istniał, ale był pusty. Usunięcie go i ponowne uruchomienie programu Visual Studio rozwiązało problem.
(Korzystanie z programu Visual Studio Professional 2017 w wersji 15.3.5 i ReSharper 2017.2.1).
źródło
Zmierzyłem się z tym problemem w aktualizacji 3 w porównaniu z 2017 w Resharper Ultimate 2017.2
Restart vs lub restart machine nie może pomóc.
Rozwiązałem problem, czyszcząc pamięć podręczną w następujący sposób:
Aktualizacja:
W prawym górnym rogu okna testowego znajduje się przycisk „błąd” (znajduję się w Resharper 2018).
Kliknięcie przycisku błędu powoduje wyświetlenie komunikatu o błędzie, który może pomóc w rozwiązaniu problemu.
Aby śledzić źródło problemu, uruchom program Visual Studio w trybie dziennika. W porównaniu z 2017, uruchom polecenie:
Uruchom test.
Przejrzyj plik dziennika test_log.txt i wyszukaj w nim „błąd”.
Plik dziennika jest bardzo pomocny w znalezieniu błędu, który można rozwiązać, lub można wysłać problem z plikiem dziennika do zespołu pomocy technicznej Resharper .
źródło
Właśnie rozwiązałem ten problem. Jednak żadne z rozwiązań w tym wątku nie zadziałało. Oto, co zrobiłem ...
Ponieważ R # nie podał żadnych szczegółów na temat tego, dlaczego coś się nie udaje, zdecydowałem się wypróbować wbudowany tester VS2013. Doświadczył dokładnie tego samego zachowania, gdy żaden z testów nie został przeprowadzony. Jednak patrząc w okno Output, w końcu pojawił się komunikat o błędzie:
To doprowadziło mnie do kolejnego wątku na SO z rozwiązaniem. Uwierz mi, NIGDY nie odgadłbym, na czym polega problem.
Niedawno wprowadziłem kilka zmian w pliku AssemblyInfo.cs podczas tworzenia pakietu NuGet. Jedna ze zmian obejmuje określenie wartości kultury asemblera „en”.
Zmieniłem to:
do tego:
To było to! To właśnie w niewytłumaczalny sposób złamało moje testy jednostkowe. Jednak nadal nie rozumiem, dlaczego. Ale przynajmniej wszystko znowu działa. Po cofnięciu tej zmiany (tj. Ustawieniu kultury z powrotem na „”) moje testy zaczęły działać ponownie.
Mam nadzieję, że to komuś pomoże.
źródło
W moim przypadku
[Test]
metody były sprawiedliweprivate
. Wstydźródło
Mój problem polegał na tym, że zainstalowałem NUnit tylko z nuget. Nie zainstalowałem NUnit3TestAdapter, który również był wymagany.
źródło
W moim przypadku był to błąd, który popełniłem podczas kopiowania ciągu połączenia w pliku app.config .. Umieściłem go w tagu configSections!
Zajęło mi trochę czasu, zanim zdałem sobie sprawę, że ... dzięki VS intellisense ... czy to było coś więcej?
źródło
Miałem podobny problem. VS 2010, c # CLR 2 Nunit 2.5.7, po prostu skompiluj> czyste rozwiązanie z VS pomogło rozwiązać ten problem
źródło
W moim przypadku utworzyłem metodę testową asynchroniczną, która zwróciła
void
. ZwrotTask
zamiastvoid
rozwiązania problemu.źródło
Czy ostatnio dodałeś jakieś zależności DLL? ... jak ja
Właśnie natknąłem się na ten sam problem i bardzo irytujące było to, że nie dostałem żadnej wskazówki w oknie wyników testu ani w innym praktycznym miejscu.
Przyczyna była wyjątkowo głupia: po prostu dodałem dzień wcześniej zależność do dodatkowej zewnętrznej biblioteki DLL w podprojekcie, a aplikacja głównego projektu rzeczywiście została zbudowana i działała poprawnie po zmianie. Ale moje testy jednostkowe są w siostrzanym projekcie głównej aplikacji, a zatem mają również zależność od tego zmienionego projektu podrzędnego, w którym wywołano bibliotekę DLL ... jednak lokalizacja projektu testowego w czasie wykonywania nie jest taka, jak w głównej aplikacji! Tak więc zmiana kompilacji w celu skopiowania brakującej biblioteki DLL do katalogu testowego środowiska wykonawczego rozwiązała problem.
źródło
Używam VS2013, ReSharper 9.1 z rozszerzeniem MSpec z ReSharper i Moq. Wystąpił ten sam „niejednoznaczny” błąd.
Okazało się, że jeden z moich Mocków z Moq nie został zainicjowany, tylko zadeklarowany. One zainicjowały wszystkie testy uruchomione ponownie.
źródło
W moim przypadku otrzymałem ten błąd z powodu trybu „Release”, w którym po prostu wyłączono kompilację projektu UnitTests. Powrót do trybu „Debuguj” naprawił problem.
To naprawdę zaskakujące, że ReSharper nie może nic powiedzieć, jeśli w ogóle nie może znaleźć biblioteki UnitTests. Poważnie, szkoda;)
Mam nadzieję, że to komuś pomoże
źródło
W moim przypadku wszystko testy w ramach niektórych projektów testowych w ramach rozwiązania przestały działać po dodaniu nowych projektów. Używanie VS 2017 z ReSharper 2017.1.2 tutaj.
Przede wszystkim upewnij się, że nie marnujesz czasu, zakładając, że Twój problem jest związany z ReSharper. Łatwo jest założyć, że coś jest nie tak z ReSharper, jeśli używasz jego funkcji testowania jednostkowego, w tym Unit Test Explorer . Otworzyć Visual Studio testu Explorer w ramach testów menu i spróbuj Run Wszystko ”. Dodatkową zaletą tego rozwiązania jest to, że okno wyświetlania pokaże się komunikat o błędzie, który może skierować Cię w dobrym kierunku. Jeśli zauważysz, że ten sam zestaw testów nie są uruchamiane, można bezpiecznie założyć, że problem dotyczy programu Visual Studio, a nie ReSharper.
Skończyło się na usunięciu i ponownym dodaniu jednej z platform aktywnych rozwiązań , Dowolny procesor , w Configuration Manager . W ten sposób po zapisaniu moich zmian i ponownym otwarciu rozwiązania wszystkie testy zaczęły działać ponownie.
Wydaje mi się, że w pliku rozwiązania pojawił się nieoczekiwany wpis konfiguracyjny, gdy dodałem nowe projekty i używając odtwarzania jednej z platform, poprawił się. Próbowałem się różnić, ale trudno było stwierdzić, co się zmieniło, co spowodowało problem.
źródło
Dla tych, którzy doświadczają tego problemu w moim projekcie testowym
.NET Core 2.0
wVisual Studio 2017 Community (v15.3 3)
. Miałem również ten błąd przy użyciuJetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346
- jest błąd, który opublikowałem.JetBrains doradził stworzenie od podstaw nowego projektu testowego w celu jego odtworzenia. Kiedy to zrobiłem i testy działały poprawnie, znalazłem przyczynę problemu:
*.csproj
pliku:Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}
"Kiedy to zrobiłem - testy zaczęły działać dobrze.
źródło
Używam VS2010, NUnit 2.6.3 (chociaż wewnętrznie ReSharper twierdzi, że używa 2.6.2?), ReSharper 7.7.1 i NCrunch 2.5.0.12 i uruchomiłem to samo „... test jest niejednoznaczny ...” z NUnit, ale NCrunch powiedział, że wszystko jest w porządku. Przez większość dnia NUnit i NCrunch były w synchronizacji, uzgadniając, które testy były szczęśliwe, a które wymagały refaktoryzacji, potem wydarzyło się coś, czego nadal nie rozumiem, i przez chwilę NCrunch powiedział, że testy zakończone niepowodzeniem (ale przejście przez nie pokazało im, że pass), a następnie zdecydował, że wszystkie działają, a NUnit zaczął narzekać na wszystkie moje testy, z wyjątkiem jednego z tym samym komunikatem „..test is inc-rozstrzygający…”, przez który ponownie mogłem przejść do przejścia, mimo że NUnit kontynuował aby pokazać to jako „niejednoznaczne”).
Wypróbowałem kilka powyższych sugestii bezskutecznie, a ostatecznie po prostu zamknąłem VS2010 i ponownie otworzyłem rozwiązanie. Voila, teraz wszystkie moje testy znów są szczęśliwe, a NCrunch i NUnit ponownie raportują te same wyniki. Niestety nie mam pojęcia, co się zmieniło, aby spowodować utratę synchronizacji, ale wydaje się, że zamknięcie i ponowne otwarcie VS2010 naprawiło to.
Może ktoś inny wpadnie na to i będzie mógł skorzystać z tego prostego (jeśli ostatecznie niezadowalającego, ponieważ nie wiesz, jaka jest prawdziwa poprawka).
źródło
Miałem ten sam problem. Przyczyną było odwołanie zewnętrzne niezgodne z ustawieniami kompilacji projektu. Aby rozwiązać ten problem, kliknąłem prawym przyciskiem myszy projekt-> właściwości-> kompilacja-> Platforma docelowa-> zmień z Any CPU na x86.
Konkretny plik * .dll, z którym pracowałem, to System.Data.SQLite. Ten konkretny plik * .dll jest zakodowany na stałe dla operacji 32-bitowych. Ustawienie „Dowolny procesor” próbowało załadować go jako 64-bitowy.
źródło
Moje rozwiązanie:
NUnit 3.2.0 ma pewne problemy z Resharper - downgrade do 2.6.4:
źródło
W moim przypadku moja metoda testowa była prywatna, zmieniłem ją na publiczną i zadziałała.
źródło
Spowodowany brakującym (nie uszkodzonym) plikiem App.Config. Dodanie nowego (Dodaj -> Nowy element ... -> Plik konfiguracyjny aplikacji) naprawiło to.
źródło
Miałem ten sam problem, który był związany z wersją kompatybilności między NUnit 3.5 a Resharper 9.2, ponieważ został rozwiązany poprzez przejście z NUnit 3.5 do 2.6.4. U mnie to zadziałało. powodzenia.
źródło
Jeśli używasz
xUnit
, rozwiązałem problem z instalacjąxunit.running.visualstudio
pakietu. (obecnie używaxUnit 2.3.1
iVS17 Enterprise 15.3.5
)źródło
Miałem ten sam problem, aby uruchomić dowolny test przy użyciu frameworka NUnit. „Niejednoznaczne: test nie został uruchomiony” Visual Studio 2017 15.5.6
ReSharper Ultimate 2017.3.3 kompilacja 111.0.20180302.65130
ROZWIĄZANE Dodanie zależności projektu do Microsoft.NET.Test.Sdk
źródło
Dla tych, którzy spieszą się do wykonania testów, musiałem użyć eksploratora testów VS 2017 do uruchomienia testów;
źródło
Ten błąd wystąpił w przypadku programu Visual Studio 2017 i programu Resharper w wersji 2018.2.3, ale poprawka dotyczy wersji programu Visual Studio 2019 do.
Poprawka, aby testy działały w Resharper, polegała po prostu na aktualizacji do najnowszej wersji Resharper (2019.2.1) w momencie pisania.
źródło
Miałem dokładnie ten sam problem i nic nie pomogło.
w końcu zauważyłem, że mam niezgodność w moich przestrzeniach nazw projektu jednostkowego i projektu testów jednostkowych.
Przestrzeń nazw mojego projektu jednostkowego to unit.project, a projekt testowy został nazwany unit.project.tests, ale domyślna przestrzeń nazw testu była taka sama jak jednostka, obie to unit.project.
Po zaktualizowaniu przestrzeni nazw, aby były inne (jedna przestrzeń nazw dla każdego projektu), wszystko działało!
źródło