Korzystanie z Google Test 1.6 (Windows 7, Visual Studio C ++). Jak mogę wyłączyć dany test? (aka jak mogę zapobiec uruchomieniu testu). Czy jest coś, co mogę zrobić poza skomentowaniem całego testu?
googletest
Użytkownik
źródło
źródło
Możesz również uruchomić podzbiór testów , zgodnie z dokumentacją:
Przeprowadzanie podzbioru testów
Nie najładniejsze rozwiązanie, ale działa.
źródło
Możesz teraz użyć
GTEST_SKIP()
makra, aby warunkowo pominąć test w czasie wykonywania. Na przykład:Pamiętaj, że jest to bardzo nowa funkcja, więc może być konieczne zaktualizowanie biblioteki GoogleTest, aby z niej korzystać.
źródło
GTEST_SKIP()
jest dostępny od 1.10.0.GTEST_SKIP_("some message")
(zwróć uwagę na podkreślenie na końcu)Oto wyrażenie, które włącza testy, których nazwy zawierają ciągi foo1 lub foo2 i wyklucza testy, których nazwy zawierają ciągi bar1 lub bar2:
źródło
Wolę robić to w kodzie:
Mogę skomentować obie linie, aby uruchomić wszystkie testy, odkomentować pierwszą linię, aby przetestować pojedynczą funkcję, którą badam / nad którą pracuję, lub odkomentować drugą linię, jeśli test jest uszkodzony, ale chcę przetestować wszystko inne.
Możesz także przetestować / wykluczyć zestaw funkcji, używając symboli wieloznacznych i pisząc listę „MyLibrary.TestNetwork *” lub „-MyLibrary.TestFileSystem *”.
źródło
export GTEST_FILTER='*'
.*
„nie”. Zamiast tego użyję innej zmiennej środowiskowej, która zastępuje filtr.Jeśli potrzeba więcej niż jednego testu, należy pominąć
źródło
W innym podejściu można opakować testy w funkcję i używać normalnych testów warunkowych w czasie wykonywania, aby wykonywać je tylko wtedy, gdy chcesz.
Jest to przydatne dla mnie, ponieważ próbuję uruchomić niektóre testy tylko wtedy, gdy system obsługuje protokół IPv6 z dwoma stosami.
Technicznie rzecz biorąc, te rzeczy z podwójnym stosem nie powinny być testem jednostkowym, ponieważ zależy to od systemu. Ale tak naprawdę nie mogę wykonać żadnych testów integracyjnych, dopóki nie sprawdzę, czy i tak działają, a to gwarantuje, że nie zgłosi awarii, gdy nie jest to błąd kodów.
Jeśli chodzi o test, to mam obiekty odgałęzione, które symulują obsługę systemu dla dualstack (lub jego brak), konstruując fałszywe gniazda.
Jedynym minusem jest to, że wynik testu i liczba testów ulegną zmianie, co może powodować problemy z czymś, co monitoruje liczbę udanych testów.
Możesz także użyć ASSERT_ * zamiast EQUAL_ *. Jeśli się nie powiedzie, zapewni pozostałą część testu. Zapobiega zrzucaniu wielu zbędnych rzeczy na konsolę.
źródło
Miałem taką samą potrzebę testów warunkowych i znalazłem dobre obejście. Zdefiniowałem makro TEST_C, które działa jak makro TEST_F, ale ma trzeci parametr, który jest wyrażeniem boolowskim, oszacowany runtime w main.cpp PRZED rozpoczęciem testów. Testy, które oceniają false, nie są wykonywane. Makro jest brzydkie, ale wygląda tak:
Dodatkowo w pliku main.cpp potrzebujesz tej pętli, aby wykluczyć testy, które oceniają false:
źródło