2011-07-13 11 views
5

Używam testu Google w projekcie C++. Niektóre funkcje używają assert() w celu sprawdzenia niepoprawnych parametrów wejściowych. Czytałem już o Death-Tests (What are Google Test, Death Tests) i zacząłem używać ich w moich testowych przypadkach.Jak wyeliminować błędy środowiska wykonawczego spowodowane przez assert() przy użyciu testu Google?

Zastanawiam się jednak, czy istnieje sposób na zlikwidowanie błędów środowiska wykonawczego spowodowanych niepowodzeniem asercji. W tej chwili każde niepowodzenie asercji tworzy wyskakujące okno, które muszę zamknąć za każdym razem, gdy przeprowadzę testy. Wraz z rozwojem mojego projektu to zachowanie coraz bardziej zakłóca przepływ pracy w niedopuszczalny sposób i raczej nie testuję assert() - twierdzeń. Wiem, że istnieją możliwości całkowitego wyłączenia asercji, ale wygodniej jest tłumić ostrzeżenia generowane przez system OS z wnętrza szkieletu testowego.

Odpowiedz

2

Ok, sam znalazłem rozwiązanie: Musisz wybrać testowy styl threadsafe. Wystarczy dodać następującą linię do kodu testowego:

::testing::FLAGS_gtest_death_test_style = "threadsafe"; 

Można to zrobić dla wszystkich testów w teście binarnym lub tylko na tych testach. Ta druga jest szybsza. Mam to ze zaktualizowanego FAQ: Googletest AdvancedGuide