2015-10-14 11 views
9

Używam programów Resharper 9.2 i NUnit 2.6.4 i ~ 120 testów jednostkowych. Czasami, gdy zaczynam biegać testy, resharper zatrzymuje się na losowym teście i ustawia go na Przerwano i pomija pozostałe. Jest to bardzo niewygodne, ponieważ ręcznie wykonuję pozostałe testy. Czy są jakieś sposoby na uzyskanie przyczyny aborcji, niektórych dzienników testów resharperów lub czegoś w NUnit, aby pomóc rozwiązać mój problem?Jak mogę ustalić przyczynę przerwanych testów Resharpera?

Próbowałem również użyć natywną NUnit biegacza ale czasami rzuca wyjątek, który nie zawiera żadnych użytecznych informacji (niektóre wyjątek remoting który mówi nic użytecznego)

Próbowałem ustawić „Run do 1 zespołów równolegle "i" Użyj oddzielnego AppDomain dla każdego zestawu z testami ", ale to nie pomaga.

UPD

Mam powielana to w trybie debugowania, testy jednostkowe debugowania po prostu zamknąć i w oknie wyjściowym Znalazłem:

The program '[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Program Trace' has exited with code 0 (0x0). 
The program '[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005) 'Access violation'. 

Wydaje się, że problemem jest to biblioteka zewnętrznego niebezpieczne kod.

+1

Spróbuj debugować kod natywny lub po prostu dodaj rejestrację. –

Odpowiedz

1

Wygląda na to, że resharper nie ma w tym przypadku nic wspólnego. Mam błąd naruszenia zasad dostępu i w tym przypadku proces testera zostanie zamknięty. Nie ma sposobu, aby przetworzyć ten błąd, ponieważ nie jest on na poziomie zarządzanym. Jedyną rzeczą jest sprawdzenie okna wyjściowego, jeśli komunikat o błędzie jest podobny: "Program" [4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Zarządzany (v4.0.30319) "został zakończony z kodem -1073741819 (0xc0000005)" Dostęp naruszenie ", gdy twoje testy zostaną przerwane bez powodu. Jeśli masz dostęp do natywnego kodu, możesz debugować.

W moim przypadku problem polegał na niewłaściwym użyciu obiektu COM i metody Dispose(). Naprawiłem to i teraz wszystko jest ok - bez "cichej" aborcji.

+0

Po godzinach wyszukiwania google było to dla mnie rozwiązaniem. Brawo! Debugowałem test i widziałem FatalExecutionEngineError w natywnym kodzie, który nie miał śladu stosu, stąd brak komunikatów o błędach Resharpera. Teraz wiem, co to jest, mogę to naprawić! –

1

Wpadłem również na przypadek, w którym Resharper zdecydował się konsekwentnie przerwać test. Nie zadzwonił do niezarządzanego ani niczego dziwacznego.

Odpowiedź była taka, że ​​miała nieumyślne wywołanie rekursywne powodujące wyjątek stackoverflow. Było to oczywiste, kiedy zdecydowałem się "debugować" zamiast "je uruchamiać".

Zakładam więc, że generalnie na wynos jest to, że "przerwane" testy są symptomatyczne, że coś poszło nie tak, ale błąd nie spowodował wyrzucenia wyjątku z samego kodu, ale z CLR lub czegoś podobnego.

+0

Debugowanie zamiast uruchamiania jest kluczowe. To takie proste, że chcę się rzucić. –

Powiązane problemy