Kontekst:
Niektórzy użytkownicy zgłaszają problemy z funkcją przesyłania plików w naszej aplikacji internetowej. Zdarza się to tylko sporadycznie i bez specjalnego wzoru. Próbowaliśmy to rozgryźć przez długi czas, dodając informacje do debugowania wszędzie tam, gdzie moglibyśmy pomyśleć, że mogą pomóc, przeszukiwać dzienniki itp., Ale nie byliśmy w stanie ich odtworzyć ani rozgryźć.
Problem:
Próbuję teraz to odtworzyć, używając MSTest i WatiN, aby powtórzyć operację, która powinna zakończyć się niepowodzeniem wiele razy (kilkaset). Żeby mieć pojęcie o tym, jak daleko zaszedł test, chcę wydrukować coś takiego:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Nie pojawia się to jednak w oknie Wyjście. Teraz wiem, że w wynikach testu otrzymasz dane wyjściowe konsoli (a także to, co wyprowadzasz, Debug.Writeline
itp.), Ale jest to dostępne dopiero po zakończeniu testu. A ponieważ mój test z setkami powtórzeń może zająć trochę czasu, chciałbym wiedzieć, jak daleko zaszedł.
Pytanie:
Czy istnieje sposób, aby uzyskać dane wyjściowe konsoli w oknie danych wyjściowych podczas wykonywania testu?
Odpowiedzi:
Dane wyjściowe konsoli nie pojawiają się, ponieważ kod zaplecza nie działa w kontekście testu.
Prawdopodobnie lepiej będzie użyć
Trace.WriteLine
(In System.Diagnostics), a następnie dodać odbiornik śledzenia, który zapisuje do pliku.Ten temat z MSDN pokazuje, jak to zrobić.
Według komentarzy Marty'ego Neala i Dave'a Andersona:
źródło
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
iConsole.WriteLine()
dane wyjściowe do widoku wyników testu , a nie widoku wyjściowego . (Zauważ, że w widoku wyników testu może być konieczne dodanie kolumny Output (Stdout) poprzez kliknięcie prawym przyciskiem myszy i wybranie opcji Dodaj / usuń kolumny ... ) Ale być może nadal nie widzę wyników w danych wyjściowych Widok oznacza, że czegoś mi brakuje ...Trace.Listeners.Add(new ConsoleTraceListener());
jest wystarczające, a następnie Pokaż dane wyjściowe z debugowania w oknie wyjściowym.Użyj
Debug.WriteLine
. Spowoduje toOutput
natychmiastowe wyświetlenie wiadomości w oknie. Jedynym ograniczeniem jest to, że musisz uruchomić test wDebug
trybie.Wynik
źródło
using System.Diagnostics;
Znalazłem własne rozwiązanie. Wiem, że odpowiedź Andras jest prawdopodobnie najbardziej zgodna z MSTEST, ale nie miałem ochoty na refaktoryzację mojego kodu.
Jednorazowe
ConsoleRedirector
definiuje się jako:źródło
Miałem ten sam problem i "przeprowadzałem" testy. Jeśli zamiast tego „Debuguj” testy, wyjście debugowania pokazuje dobrze, jak wszystkie inne Trace i Console. Nie wiem jednak, jak zobaczyć wynik, jeśli „uruchomisz” testy.
źródło
System.Diagnostics.Debug.WriteLine
podczas debugowania testów, ale jak zabrać sięConsole.WriteLine
do pracy? To nie kończy się na normalnym (aktualizowanym na żywo) wyjściu dla mnie.Lepiej skonfiguruj pojedynczy test i utwórz test wydajności na podstawie tego testu. W ten sposób możesz monitorować postęp przy użyciu domyślnego zestawu narzędzi.
źródło