crpcut (wymawiane "bzdura cut") jest przedzielony Solidna Jednostka C ++ POSIX Tester. Z crpcut łatwo jest napisać, że inne testy jednostkowe ramy badań nie może zarządzać.
Przykład wprowadzający:
Przykład testowania części std :: string:
& Nbsp; #include
& Nbsp; #include
& Nbsp; struct apastr // uchwyt do testów mosts
& Nbsp; {
& Nbsp; apastr (): s ("APA") {}
& Nbsp; std :: string s;
& Nbsp;};
& nbsp; testsuite (podstawy)
& Nbsp; {
& Nbsp; TEST (default_constr_and_destr)
& Nbsp; {
& Nbsp; std :: string s;
& Nbsp; ASSERT_TRUE (s.empty ());
& Nbsp; ASSERT_EQ (s.length (), 0);
& Nbsp;}
& Nbsp; TEST (constr_from_char_array, apastr,
& Nbsp; DEPENDS_ON (default_constr_and_destr))
& Nbsp; {
& Nbsp; ASSERT_EQ (s.length (), 3UL);
& Nbsp;}
& Nbsp; TEST (co, apastr,
& Nbsp; DEPENDS_ON (default_constr_and_destr))
& Nbsp; {
& Nbsp; ASSERT_EQ (s.at (1), 'p');
& Nbsp;}
& Nbsp;}
& nbsp; testsuite (błędy, DEPENDS_ON (ALL_TESTS (podstawy)))
& Nbsp; {
& Nbsp; TEST (at_out_of_range, apastr,
& Nbsp; EXPECT_EXCEPTION (std :: out_of_range))
& Nbsp; {
& Nbsp; s.at (4);
& Nbsp;}
& Nbsp; TEST (index_oper_out_of_range, apastr,
& Nbsp; EXPECT_SIGNAL_DEATH (SIGABRT),
& Nbsp; NO_CORE_FILE)
& Nbsp; {
& Nbsp; s [4];
& Nbsp;}
& Nbsp;}
& Nbsp; int main (int argc, char * argv [])
& Nbsp; {
& Nbsp; powrócić crpcut :: test_case_factory :: RUN_TEST (argc, argv);
& Nbsp;}
Podobne testy korzyści z zgrupowane w próbkach apartamentów. Test-apartamenty mogą zależeć od innych testowanych-apartamentów, co oznacza, że zawarte testów będzie działać tylko wtedy, gdy wszystkie badania to zależy od zakończyły się powodzeniem. Wyniki mogą być sprawdzane za pomocą kilku makr dochodzić. Testy mogą używać urządzeń wyrazić wspólne zawartość. Można oczekiwać, że do wyjść od wyjątku i śmierć testów. Oczekiwania, że nie są spełnione są błędy. Komunikaty na stderr i stdout są gaught, a zawarte w dzienniku wyników.
Dlaczego crpcut
Co najważniejsze, musi być łatwe do pisania testów. Z crpcut, skupić się na logice konstrukcji testów i badań, a nie na granicach wyznaczonych środowisku testowym.
Z crpcut, każdy przypadek testowy działa we własnym procesie oraz własnego katalogu roboczego. Jeśli sprawdzian nie, proces kończy się natychmiast, zanim nie dalsze szkody. Oznacza to, że każdy przypadek testowy rozpoczyna się czystym kontem, niezależny od innych testów. To jest szufladkowanie.
Oznacza to również, że zestaw testowy trwa, nawet jeśli test awarii. Można ustawić terminy testów, a jeśli czas jest dozwolone poważnie przesadzony, proces sprawdzian ginie. Te dwa tworzą część solidności.
Możesz określić zależności między przypadków testowych oraz między testowych, tak, że jeśli nie podstawowe badania, badania, które są oparte na podstawowej funkcjonalności nie będą w ogóle uruchomić.
Crpcut Proces głównym nie ma dynamicznej pamięci przydzielonej w czasie procesu sprawdzian jest uruchamiany, więc można uruchomić crpcut pomocą narzędzia testowania pamięci, takich jak valgrind, a jeśli nie jest pamięć przydzielona gdy proces przypadek testowy kończy, ty mogą być pewni, że znalazłeś przeciek pamięci w teście.
Jeśli masz procesor wielordzeniowy, może być korzystne, aby uruchomić kilka testów równolegle. crpcut pozwala na to.
Jeśli istnieją pliki pozostawione w procesie testowym "katalog roboczy po procesie badanej sprawy zakończone, przypadek testowy powinien zakończyć się niepowodzeniem. Katalog roboczy pozostaje nietknięty przez crpcut, aby zbadać,
Co nowego w tym wydaniu:.
- Ta wersja obsługuje wypłaty ze starymi wersjami CMake.
Co nowego w wersji 1.9.1:
- libcrpcut_basic.so został zbudowany, ale nie zainstalowany
Co nowego w wersji 1.8.4:
- To jest drobna wydanie poprawkowe korygowanie problemów oprzyrządowanie valgrind , zależności badań i uszkodzony atrybut czas trwania testu w raportach XML.
Co nowego w wersji 1.8.2:
- To drobne ulepszenie funkcji sprawia, że parametr wiersza poleceń - -timeout-mnożnik = współczynnik teraz także mają wpływ na limity czasu do budowy opraw i zniszczenia.
Co nowego w wersji 1.8.1:
- To drobne ulepszenie funkcji sprawia, że parametr wiersza poleceń - -timeout-mnożnik = współczynnik teraz także mają wpływ na limity czasu do budowy opraw i zniszczenia.
Co nowego w wersji 1.7.2:
- Ta wersja naprawia drobny błąd z próby NO_CORE_FILE modyfikator, które wystąpiły w systemie Linux, gdy / proc / sys / kernel / core_pattern opisane potokiem zrzut do programu, zamiast zapisywania do pliku.
Co nowego w wersji 1.6.1:
- Jest to poprawka do błędu, że w niektórych przypadki spowodowane zniekształconej przez wyjście XML brakuje blisko na liście blocked_tests.
Co nowego w wersji 1.6.0:
- Nowe funkcje są dodatkowe opcjonalnego parametru ASSERT_THROW () i VERIFY_THROW (), która sprawdza wartość obiektu wyjątku, dwa istream wersja oparta o get_parameter (), aby wybrać wartości przekazywane z linii poleceń i opcji zbudować libcrpcut jako statyczny lub biblioteki współdzielonej.
Co nowego w wersji 1.5.0:
- Główną nowością jest tagging testów. Tagi to metoda wyboru testu prostopadłe do tej testsuites. Tagi mogą być również używane do rozróżnienia badania, które są krytyczne (np regresji) i badania, które są nie-krytyczne (np funkcjonalność aktualnie pracował.)
- Experimental dostępne do dekoracji raporty z badań, na przykład, ANSI kolorów ucieczek jest.
Komentarze nie znaleziono