2012-01-29 14 views
5

Mam dziwny problem z testowaniem jednostki w Visual Studio 2010. Mam test, który przechodzi, gdy używam "Testu debugowania" (bez żadnych punktów przerwania), ale kończy się niepowodzeniem, gdy używam "Run test". Ten test używa zewnętrznych bibliotek dll, więc nie mogę go poprawnie debugować.Testowanie jednostek w VS2010 - "Debugowanie" przebiega, "Uruchom" kończy się niepowodzeniem

Czy znasz jakiś powód, dla którego taka sytuacja jest możliwa? Dlaczego "test debugowania" różni się od "testu uruchamiania", gdy wszystkie pozostałe parametry są takie same?

+2

Czy masz jakieś ' CondtionalAttribute' w twojej bazie kodu, która działa tylko podczas debugowania? Dowolne sekcje '#if Debug'? W bibliotekach stron trzecich jest całkiem możliwe, że robią różne rzeczy w trybach debugowania i wydania. – Oded

+0

Dodając pytanie do Odeda, czy istnieje jakiś konkretny kod, który jest określony w czasie? Każda część kodu, która może wymagać opóźnienia, przejdzie podczas debugowania, ale zawiedzie w normalnym przepływie. –

+0

Czy sprawdziłeś okno wyników testu i zobaczysz, jaki błąd się tam dostałeś. –

Odpowiedz

2

Nie może być kilka powodów, ale jeden pin-point, musisz dać nam trochę kodu do pracy.

To może być wykluczenie Kod:

#ifdef _DEBUG 
//do something 
#endif 

ta zostanie wykonana tylko w trybie debugowania.

Może to być optymalizacja. Chociaż nie powinny one normalnie wpływać na zachowanie, nie powinieneś polegać na destruktorach ani kopiować konstruktorów, którzy są wywoływani.

Jeśli robisz każdy hacking wewnątrz kodu, może to również być ważne dla debugowania tylko.

1

Podejrzewam, że uzyskujesz dostęp do pamięci poza zakresem. Główną różnicą między debugowaniem a wersją jest to, że debugowanie dodaje zestawy, jeśli padding i specjalne znaczniki do alokacji pamięci, aby przechwytywać określone rodzaje błędów. Oznacza to, że układy pamięci często bardzo różnią się między kompilacjami debugowania i wydania. Podejrzewam, że uzyskujesz dostęp do pamięci poza granicami w taki sposób, że debugger nie działa, gdzie znajdziesz przypadkową poprawną wartość w wersji debugowania, ale nieprawidłową w wersji Release.

3

przejdziesz do trybu rozwiązanie zamiast Debug Zwolnij, uruchomić pełne build, powrócić do debugowania i ponownie i daj mi znać wynik, myślę testy przejdzie ....

+0

To rozwiązało mój problem. Dzięki! – gstar

Powiązane problemy