Każde wywołanie w moich testach jednostkowych do jednego Debug.Write(line)
lub Console.Write(Line)
po prostu jest pomijane podczas debugowania, a wynik nigdy nie jest drukowany. Wywołania tych funkcji z klas, których używam, działają poprawnie.
Rozumiem, że testowanie jednostkowe ma być zautomatyzowane, ale nadal chciałbym mieć możliwość wyprowadzania komunikatów z testu jednostkowego.
Próbowałem również uzyskać debugowanie lub śledzenie lub konsolę lub testContext do pracy w testach jednostkowych.
Żadna z tych metod nie wydaje się działać ani wyświetlać wyników w oknie wyników:
Visual Studio 2012 i nowsze
(z komentarzy) W programie Visual Studio 2012 nie ma ikony. Zamiast tego w wynikach testu znajduje się łącze o nazwie Wyjście . Jeśli klikniesz link, zobaczysz wszystkie pliki
WriteLine
.Przed Visual Studio 2012
Wtedy zauważyłem, że w moim oknie Wyniki testu , po uruchomieniu testu, obok małego zielonego kółka wskazującego sukces , jest kolejna ikona. Dwukrotnie kliknąłem. To były moje wyniki testu, który zawierał wszystkie powyższe typy zapisów.
źródło
W programie Visual Studio 2017 można zobaczyć dane wyjściowe z eksploratora testów.
1) W Twojej metodzie testowej Console.WriteLine („coś”);
2) Uruchom test.
3) W oknie Eksploratora testów kliknij opcję Zaliczona metoda testu.
4) I kliknij link „Wyjście”.
I kliknij „Wyjście”, zobaczysz wynik działania Console.Writeline ().
źródło
Console.WriteLine
nie są również widoczne w okienku Wyjście w obszarze „Testy”.To zależy od twojego testera ... na przykład używam xUnit , więc jeśli tego właśnie używasz, postępuj zgodnie z poniższymi instrukcjami:
https://xunit.github.io/docs/capturing-output.html
Ta metoda grupuje dane wyjściowe z każdym określonym testem jednostkowym.
W linku, który podałem, znajduje się inna metoda pisania w oknie Wyjście, ale wolę poprzednią.
źródło
Myślę, że nadal jest aktualny.
Możesz użyć tego pakietu NuGet : Bitoxygen.Testing.Pane
Wywołaj niestandardową metodę WriteLine z tej biblioteki. Tworzy okienko testowania wewnątrz danych wyjściowych oknie i zawsze umieszcza tam komunikaty (podczas każdego testu działa niezależnie od flag DEBUG i TRACE).
Aby ułatwić śledzenie, polecam utworzenie klasy bazowej:
źródło
Could not load file or assembly 'Microsoft.VisualStudio.Shell.12.0,
Spróbuj użyć:
Console.WriteLine()
Wywołanie do
Debug.WriteLine
zostanie nawiązane tylko wtedy, gdy zdefiniowano DEBUG.Inne sugestie są do użycia:
Trace.WriteLine
również, ale nie próbowałem tego.Istnieje również opcja (nie jestem pewien, czy Visual Studio 2008 ją ma), ale nadal możesz użyć,
Debug.WriteLine
gdy uruchomisz test zTest With Debugger
opcją w IDE.źródło
Rozwiązano za pomocą następującego przykładu:
Po uruchomieniu tego testu, w sekcji „Test zakończony pomyślnie”, można wyświetlić dane wyjściowe, co spowoduje wyświetlenie okna wyników.
źródło
To rzeczywiście zależy od testera, jak wspomniał @jonzim. W przypadku NUnit 3 musiałem użyć
NUnit.Framework.TestContext.Progress.WriteLine()
aby uzyskać działające dane wyjściowe w oknie danych wyjściowych programu Visual Studio 2017.NUnit opisuje, jak to zrobić: tutaj
Zgodnie z moim zrozumieniem obraca się to wokół dodatkowej równoległości wykonywania testów, którą otrzymali testerzy.
źródło
Nie otrzymuję danych wyjściowych, gdy moje ustawienie Test / Test Settings / Default Processor Architecture i zestawy, do których odwołuje się mój projekt testowy, nie są takie same. W przeciwnym razie Trace.Writeline () działa dobrze.
źródło
Console.WriteLine nie będzie działać. W trybie debugowania będą działać tylko Debug.WriteLine () lub Trace.WriteLine ().
Wykonuję następujące czynności: uwzględniam użycie System.Diagnostics w module testowym. Następnie użyj Debug.WriteLine dla mojego wyniku, kliknij prawym przyciskiem myszy test , wybierz Debuguj wybrane testy . Wynik końcowy pojawi się teraz w oknie Wyjście poniżej. Używam Visual Studio 2017 w porównaniu z 15.8.1, z domyślną platformą testów jednostkowych, które zapewnia VS.
źródło
Czy na pewno uruchamiasz testy jednostkowe w debugowaniu? Debug.WriteLine nie będzie wywoływana w kompilacjach wydania.
Dwie opcje do wypróbowania to:
Trace.WriteLine (), który jest wbudowany w kompilacje wydania, a także w debugowanie
Undefine DEBUG w ustawieniach kompilacji dla testu jednostkowego
źródło
Używam xUnit, więc używam tego:
PS: możesz
Debugger.Break();
też użyć , więc możesz zobaczyć swój loginout
.źródło
out
”?Inny wariant przyczyny / rozwiązania:
Mój problem polegał na tym, że nie otrzymywałem danych wyjściowych, ponieważ pisałem zestaw wyników z asynchronicznego wywołania LINQ do konsoli w pętli w kontekście asynchronicznym:
Tak więc test nie zapisywał do konsoli, zanim obiekt konsoli nie został wyczyszczony przez środowisko wykonawcze (podczas uruchamiania tylko jednego testu).
Rozwiązaniem było najpierw przekonwertowanie zestawu wyników na listę, więc mogłem użyć nieasynchronicznej wersji forEach ():
źródło
W VS 2019
View
->Test Explorer
additional output
link, jak pokazano na zrzucie ekranu poniżej.Możesz użyć:
wszyscy będą logować się do dodatkowego okna wyjściowego.
źródło
Trace.WriteLine
powinno działać, pod warunkiem że wybierzesz prawidłowe wyjście (menu rozwijane z etykietą „Pokaż wyjście z” w oknie Wyjście ).źródło