2011-01-05 31 views
5

Jaka jest najlepsza praktyka dotycząca instrukcji Debug.Print?C#: Najlepsze praktyki Debug.Print

Czy należy zaśmiecać moje metody szkoleniowe za pomocą instrukcji Debug.Print, czy też należy w ogóle unikać Debug.Print?

Jeśli dopuszczalne są oświadczenia Debug.Print, czy powinienem rozważyć użycie Trace.Print lub EventLog?

Czy wymagane są instrukcje Debug.Print w testach jednostkowych? Czy mogę ominąć oświadczenia Debug.Print dobrze napisanymi testami jednostkowymi?

Odpowiedz

5

Debug.Print jest do zaakceptowania, nie tylko dlatego, że zostaną skompilowane w kompilacjach wydań. Jednak "zaśmiecanie" twojego kodu nie brzmi szczególnie produktywnie lub jest użyteczne.

Można go dodać podczas debugowania określonego obszaru kodu. Po zidentyfikowaniu defektu można napisać test jednostkowy, aby zakryć sprawę, naprawić błąd, a następnie usunąć połączenie z numerem Debug.Print.

Czasem używam i zostawiam w bazie kodu: Debug.Assert - to jest jak wbudowany punkt przerwania, jeśli moja aplikacja nie jest w oczekiwanym stanie, co jest tylko dodatkową siatką bezpieczeństwa podczas wykonywania testów automatycznych i ręcznych .

Debug.Print nie jest konieczne w testach jednostkowych i nie należy go dodawać ze względu na testy jednostkowe.

+0

Należy zauważyć, że instrukcje "Debug.Assert" są również [usuwane w wersji Release Build] (http://stackoverflow.com/a/13383661/1497596). (O ile do konfiguracji wydania nie dodano "DEBUG"). Zamiast tego rozważ użycie ['Trace.Assert'] (http://stackoverflow.com/a/6752696/1497596), jeśli chcesz, aby twoje asercje były wykonywane w wersji Release . – DavidRR

2

W ogóle nie potrzebujesz Debug.Print z testami jednostkowymi! Punktem testów jednostkowych jest to, że automatycznie otrzymujesz wskazanie, czy test się powiódł, czy nie, nie musisz szukać odbitek do debugowania.

NUnit jest łatwą w użyciu biblioteką testów jednostkowych.

Jeśli chodzi o śledzenie lub rejestrowanie, nie musisz też zaśmiecać kodu przy użyciu odbitek do debugowania. Wypróbuj interception with Castle Windsor lub inne frameworki obsługujące AOP.

0

Nigdy nie użyłem Debug.Print ani Trace.Print. Piszę dużą liczbę testów jednostkowych. Nigdy nie odkryłem, że muszę używać obiektów Debug lub Trace z testami jednostkowymi, które piszę. Staram się jednak testować jednostkowo tak dużo, jak to tylko możliwe.