2014-06-10 15 views
6

Mam zestaw testów jednostkowych używający mstest, który mogę uruchamiać w studio visual, ale gdy moje skrypty wdrażania spróbują uruchomić testy przy użyciu wywołania z linii poleceń do mstest, to zostaną zamrożone podczas test na połowę czasu. Jest to prawdopodobnie problem w teście, ale bez możliwości odtworzenia problemu w debugerze nie mogłem znaleźć problemu.Jak dołączyć debuggera do wiersza poleceń mstest

Do tej pory nie udało mi się dołączyć do procesu mstest, aby móc debugować problem, ponieważ gdy załączam i wstrzymuję, nie widzę niczego w visual studio (brak wątków na liście, brak znanego kodu). Czy jest coś dziwnego w tym, w jaki sposób używa domen aplikacji, które uniemożliwiają łatwe dołączenie do niego? Jakieś inne dobre sposoby wypróbowania i rozwiązania problemów, czy możliwe jest nawet wykonanie odpowiednika Console WriteLine z wnętrza testu, aby mstest wyświetlił go w oknie konsoli, w którym działa?

+1

Upewnij się, że podczas podłączania wybierasz właściwy typ debuggera - spróbuj podać jawnie zamiast automatycznego wykrywania. –

+0

Hmm, dziwne. Możesz zrobić "Trace.WriteLine", i pojawi się w wygenerowanym pliku .trx, ale nie jestem pewien, czy zapisuje raport do samego końca ... – Cameron

Odpowiedz

3

dwie opcje.

  1. W IDE odznacz Test -> Ustawienia testowe -> Zatrzymaj silnik wykonywania testu.

lub

  1. Aby użyć polecenie:

Uruchom MSTest z przełącznikiem/noisolation. Wykona testy bezpośrednio, a nie spawnuje proces pomocniczy.

Mieszane: automatycznie dołączyć debugger VS do mstest.exe Wiersz poleceń:

skonfigurować kartę debugowania dla mojego projektu badawczego z poniższym:

Uruchom program zewnętrzny: C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ MSTest.exe

argumenty wiersza poleceń:/noisolation /testcontainer:MyProjectName.dll

2

Po przejrzeniu drzewa procesu w Process Explorer, MSTest.exe uruchomił proces potomny o nazwie QTAgent32_40.exe, udało mi się dołączyć do tego procesu i wyłączyć tylko mój kod, aby móc debugować moje testy.

Okazuje się, że został skutecznie deadlocking wewnątrz atrapa obiektu stworzyłem że używał MethodImplOptions.Synchronized

+0

Mimo że to wymyśliłeś, poleciłbym odpowiedź Roba poniżej namaszcza "odpowiedź", ponieważ omawia sposób debugowania z poziomu VS, jak również sposób przezwyciężenia uruchamiania podprocesowego. Miałem podobny problem z Tobą, a jego odpowiedź dostarczyła klucz (y). – tomo

0

Oto moja propozycja dla vstest.console narzędzia:

  1. Dodaj nową metodę badania na dole pliku testowego, więc ten test będzie pierwszy wykonany w vstest.console narzędzia:

    [TestMethod] 
    public void DebugAttachToProcessTimeout() 
    { 
        Console.ReadLine(); 
    } 
    
  2. Rozpocznij Vstest.console.exe z odpowiednimi montaż jako parametr. Narzędzie spróbuje sprawdzić pierwszy test i czekać na dane użytkownika.
  3. Przejdź do programu Visual Studio i przejdź do Debuguj -> Dołącz do procesu (CTRL + ALT + P). Następnie wybierz "Vstest.console.exe" i kliknij "Załącz".
  4. Teraz możesz wrócić do konsoli i nacisnąć Enter. Narzędzie będzie kontynuować wykonywanie testów w dołączonym studiu graficznym.
Powiązane problemy