2011-10-27 11 views
57

W procesie ustalania naszą C++ ramy testów jednostkowych dla następnych lat zakwalifikowani GoogleTest i CppUnit. Mam trochę doświadczenia z obydwoma, a moje ciężkie preferencje to GoogleTest. W każdym razie, aby przekonać mojego szefa, potrzebuję trochę informacji: fakty, więc zrobiłem trochę czytania w Internecie, w tym podręczniki, strony wiki i niektóre źródła. Wymyśliłem listę zalet GoogleTest i jedną zaletę CppUnit (graficzne testy biegaczy). Tutaj są one uporządkowane według postrzegane przydatność:GoogleTest vs CppUnit: Fakty

  • INSTANTIATE_TEST_CASE_P instancji przypadek testowy z dowolnym zestawem parametrów chcesz, w tym iloczyn kartezjański
  • FRIEND_TEST do testowania członków prywatnych klasy (dla wszystkich starszych kod)
  • zwrotnym utrzymuje się pułapki
  • niezakończonych zgonem twierdzi
  • "out of the box" integracji googlemock
  • automat IC testach wykrywania, nie ma potrzeby, aby je wyliczyć
  • testy mogą być wyłączone i włączone
  • testy prowadzone mogą być wybierane za pomocą desenie nazwa
  • wartość tests/typu parametryzowane
  • zdefiniowany przez użytkownika orzecznik twierdzi
  • śmierć testuje
  • znacznie bogatszy zestaw twierdzi
  • typ twierdzi
  • twierdząc na podprogramów
  • Dodatkowe informacje debugowania można dodawać do twierdzi użyciu < <
  • RecordProperty emituje ostatnią wartość nieruchomości do wyjścia XML
  • SCOPED_TRACE pomaga zrozumieć kontekst awarii twierdzenie pochodzące z wewnątrz sub-rutynowych lub pętli.
  • xUnit wyjście XML, mogą być wyświetlane przez Jenkinsa od razu bez transformacji XSLT pomiędzy
  • obsługuje niestandardowe typy ją drukarni
  • czasu zużywanego przez wskazanie testu (podejrzewam, że jest to również możliwe z CppUnit ale haven zdobione a)
  • detektor testu API (wtyczki przez użytkownika)
  • testy tasowanie
  • żadnych wyjątków i RTTI

m Mam rację, zakładając, że wszystkie powyższe nie są obsługiwane przez CppUnit? Czy jest przydatna funkcja GoogleTest niedostępna w CppUnit Brakuje mi?

I last but not least: Czy są jakieś fajne funkcje CppUnit, których GoogleTest nie ma?

Dzięki!

+5

Niektóre odpowiedzi do [Porównanie struktur testowych jednostek C++] (http://stackoverflow.com/questions/242926/comparison-of-c-unit-test-frameworks) odnoszą się konkretnie do funkcji GoogleTest. –

+2

Kilka lat temu robiłem podobną ankietę, GoogleTest nie było wtedy. Skoncentrowałem się na CXXTest, który posiadał mechanizm do wyliczenia przypadków testowych przez wstępny proces parsowania z Perlem. To było znacznie lepsze niż CppTest. Powiedział, że nic nie wiem o GoogleTest. –

+1

Graficzny biegacz testowy to zaleta? Zwykle chcesz coś, co można łatwo zautomatyzować, ponieważ automatyzacja oznacza łatwiejsze i częstsze otrzymywanie opinii testowych. –

Odpowiedz

7

Jeśli używasz starszej wersji kompilatora gcc czy kod działa na podstawie testów VxWorks (lub VxSim) może mieć większe szanse z CppUnit niż Googletest ram.

Z drugiej strony, inną cechą googletest ram jest dostępność 3 różnych poziomach konfiguracji/zniszczeń:

  • na program
  • na testu (lub grupy badanej)
  • na osobę instancje testowe

Nie wiem, czy jest to obsługiwane w cppUnit, ale może to być bardzo przydatne, zwłaszcza w przypadku starszych systemów.

Istnieje również wtyczka googletest dla Eclipse CDT.

3

Jeśli nie patrzyłeś na xUnit++, zrobiłem to specjalnie dlatego, że byłem niezadowolony z tego, co było dostępne (w tym gtest). Większość twoich list jest obsługiwana, a jeśli nie, jeśli jest to funkcja "koniecznie", prawdopodobnie chciałbym ją dodać.

+0

Czy możesz zwolnić go na podstawie licencji zezwalającej na dostęp typu open source? Jak licencja Apache 2.0 lub MIT? –

+0

Szczerze mówiąc nie pamiętam, która licencja jest używana, ale myślę, że * jest to licencja MIT. – moswald

+0

Dziękuję bardzo, ale chociaż tekst jest taki sam, License.txt nie mówi, że jest to licencja MIT. Czy mógłbyś go dodać (oczywiście, jeśli masz czas), jeśli jest w porządku? Podoba Ci się ten http://opensource.org/licenses/MIT? Myślę, że pozwoliłoby to większej liczbie osób korzystać i wypróbować to wspaniałe ramy :-) –

Powiązane problemy