2008-10-06 7 views
5

Próbuję użyć TestDriven.Net nie tylko do przetestowania mojego kodu, ale do wywołania funkcji na moim kodzie, której celem jest wydrukowanie wewnętrznego stanu kodu do okna Debugowania.Jak wyświetlić instrukcje Debug.WriteLine podczas korzystania z TestDriven.Net?

Oto bardzo uproszczony przykład tego, co próbuję zrobić ..

<TestFixture()> _ 
Public Class UnitTest 

    <Test()> _ 
    Public Sub TestDebug() 
     Dim oClass1 As New Class1 

     Assert.AreEqual(True, oClass1.IsTrue) 

     Debug.WriteLine("About to call .PrintDebug()") 
     oClass1.PrintToDebug() 

    End Sub 

End Class 

Public Class Class1 

    Private _IsTrue As Boolean = True 

    Public ReadOnly Property IsTrue() As Boolean 
     Get 
      Return _IsTrue 
     End Get 
    End Property 

    Public Sub PrintToDebug() 
     Debug.WriteLine("Internal state of Class1: " & _IsTrue) 
    End Sub 

End Class 

Próbuję przetestować publicznego interfejsu Class1 i jakoś zobaczyć wyjście z funkcji Class1.PrintToDebug().

szukałem przez TestDriven.Net quickstart, który pokazuje przykłady użycia Debug.WriteLine w badanej jednostki, ale dziwnie to nie działa dla mnie też - czyli tylko wyjście w moim oknem „test” jest:

------ Test started: Assembly: ClassLibrary1.dll ------ 


1 passed, 0 failed, 0 skipped, took 1.19 seconds. 

Próbowałem już szukać w innych oknach (Debugowanie i kompilacja), okno Debugowanie ma włączone opcje "Wyjście programu" i "Komunikaty wyjątków".

Szukałem opcji lub preferencji i nie mogę znaleźć żadnych!

Dzięki za pomoc!


Edit: Używam VB.Net 2.0, TestDriven.NET 2.14.2190 i NUnit 2.4.8.0

Odpowiedz

10

Okazało się, że podczas Debug.WriteLine() nie działa z testów jednostkowych , Robi to Console.WriteLine().

Powodem jest to, że po uruchomieniu testów proces debugowania nie jest wywoływany, a Debug.WriteLine() jest ignorowana. Jednakże, jeśli użyjesz "Testuj z Debuggerem", myślę (nie próbowałem) Debug.WriteLine() zadziała.

+0

Dzięki za sugestię, ale nie dostać żadnego wyjścia przy użyciu „testu z debuggera” albo opcja. Dziwne, że ich dokumentacja pokazuje kliknięcia "Debug.WriteLine" i "Run Tests"! http://www.testdriven.net/quickstart.aspx#Run%20Test(s) – Andrew

+0

Po prostu wypróbowałem Console.WriteLine() i pojawi się w oknie Test. Dam ci to na razie, dzięki jeszcze raz: o) – Andrew

+0

Przyjmuję twoją odpowiedź, ponieważ zmiana instrukcji Debug.WriteLine() rozwiązała problem. Console.WriteLine działało, chociaż zdecydowałem się użyć Trace.WriteLine zamiast: o) – Andrew

2

Trace.WriteLine() wydaje się być odpowiedź: o)

Oto wyjście na przykład z mojego pytania, używając Trace zamiast Debug:

------ Test started: Assembly: ClassLibrary1.dll ------ 

Internal state of Class1: True 

1 passed, 0 failed, 0 skipped, took 0.61 seconds. 

Jedno znalazłem chociaż. Wykonanie zostaje zatrzymane przy pierwszym stwierdzeniu błędu jednostki testowej, co oznacza, że ​​instrukcje Trace nie są wykonywane, jeśli powyższy błąd nie powiedzie się.

+0

Tak, dlatego zachęcamy do posiadania pojedynczego potwierdzenia w teście. –

0

IIRC, to wyjście jest wyświetlane tylko w oknie wyjściowym podczas uruchamiania pojedynczego testu. Spróbuj kliknąć prawym przyciskiem myszy w metodę testową, aby uruchomić właśnie ten test ...?

+1

Tak to robię, ale nadal nie ma wyjścia z Debug.WriteLine() - przełączyłem się na Trace.WriteLine i działa: o/ – Andrew

+0

Interesujące - okrzyki –

0

"Uruchom testy ..." odbiera wszelkie ustawienia potrzebne do zbudowania rozwiązania/projektu.

Musisz upewnić się, że bieżące ustawienia kompilacji dla twojego rozwiązania/projektu są ustawione na "Debuguj", a nie na "Zwolnij" (inaczej wywołania Debug.Write *() są usuwane przez kompilator conditionally).

1

Możesz chcieć wiedzieć, że 2.16 (obecna wersja beta) zawiera:

1587: Zawsze wyświetla komunikaty konsola /wyjście błędów i testy biegacz

test biegacz generowane wiadomości i wyjście konsoli zostanie wyświetlony podczas uruchamiania wszystkich testów w a projekt/rozwiązanie .

1588: Opcjonalnie śladowego Pokaż/debug wyjścia podczas uruchamiania wszystkich testów w projektu/roztwór

domyślnie śladu/wyjście debugowania nie wyświetlane podczas wykonywania wszystkich testów w projekt/roztwór. To zachowanie można zmodyfikować za pomocą panelu opcji TesDriven.Net .

Wygląda więc na to, że zadziała w następnej wersji.

+0

Świetnie! dzięki za aktualizację: o) – Andrew

2

Spróbuj użyć Trace.WriteLine (...) zamiast. Wywołanie Debug.WriteLine (...) zostanie wykonane tylko po zdefiniowaniu DEBUG. Domyślnie nowe projekty Visual Studio nie definiują DEBUGU, ale definiują TRACE.

Naprawdę powinienem zmienić przykład szybkiego startu, aby zamiast tego używać śledzenia.

Pozdrawiam, Jamie.

+1

+1 jak to napisałeś! – RichardOD

+0

-1 nie działa z funkcją śledzenia (ale można ją konfigurować za pomocą opcji) –

+0

i drukuje tuż po zakończeniu testu! –

0

CTRL + ALT + I pokazuje okienku bezpośrednim

Powiązane problemy