crpcut (uttalas "skit cut") är den fack Robust Posix C ++ Unit Tester. Med crpcut är det lätt att skriva tester som andra enhetstest ramverk inte kan hantera.
Introduktions exempel:
Ett exempel testa delar av std :: string:
& Nbsp; #include
& Nbsp; #include
& Nbsp; struct apastr // fixtur för mosts tester
& Nbsp; {
& Nbsp; apastr (): s ("apa") {}
& Nbsp; std :: string s;
& Nbsp;};
& nbsp; testsuite (grunderna)
& 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 (på, apastr,
& Nbsp; DEPENDS_ON (default_constr_and_destr))
& Nbsp; {
& Nbsp; ASSERT_EQ (s.at (1), "p");
& Nbsp;}
& Nbsp;}
& nbsp; testsuite (fel, DEPENDS_ON (ALL_TESTS (grunderna)))
& 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; återvända crpcut :: test_case_factory :: run_test (argc, argv);
& Nbsp;}
Liknande tester fördelar från att grupperas i test-sviter. Test-sviter kan lita på andra testsviter, vilket innebär att de innehöll testerna bara kommer att köra om alla tester det beror på har slutförts. Resultaten kan valideras med användning av ett antal Assert makron. Tester kan använda fixturer för att uttrycka gemensamma innehållet. Tester kan förväntas avsluta med undantag eller dö. Förväntningar som inte uppfylls är fel. Meddelanden på stderr och stdout är gaught, och ingår i resultatet loggen.
Varför crpcut
Framför allt måste det vara enkelt att skriva tester. Med crpcut, fokuserar du på teststruktur och provlogiken, inte på de begränsningar som din testmiljö.
Med crpcut, går varje testfall i sin egen process och sin egen arbetskatalog. Om ett testfall misslyckas avslutas processen omedelbart, innan den gör ytterligare skada. Detta innebär att varje testfall startar från ett oskrivet blad, opåverkad av andra tester. Detta är den uppdelning.
Det innebär också att testsvit fortsätter, även om ett test kraschar. Du kan ställa in tidsgränser för testfall, och om den tillåtna tiden är allvarligt övertrasserat, är testfall processen dödades. Dessa två utgör robustdelen.
Du kan definiera beroenden mellan testfall och mellan testsviter, så att om en grundläggande tester misslyckas, de tester som baseras på den grundläggande funktionaliteten kommer inte ens att köras.
Den crpcut huvudprocess har ingen dynamiskt minne tilldelades i samband ett testfall process startas, så att du kan köra crpcut med hjälp av ett minnestest verktyg, såsom valgrind, och om det är minnet allokeras när testfall processen avslutas, du kan vara säker på att du har hittat en minnesläcka i ditt test.
Om du har en multi-core CPU, kan det vara fördelaktigt att köra flera testfall parallellt. crpcut tillåter det.
Om det finns filer kvar i testprocessen "arbetskatalog efter testfall processen har avslutats, är testfall anses misslyckades. Arbetskatalogen lämnas orörd av crpcut, för dig att undersöka
Vad är nytt i den här versionen:.
- Denna version stöder distributioner med gamla versioner av CMake.
Vad är nytt i version 1.9.1:
- libcrpcut_basic.so byggdes men inte installerad
Vad är nytt i version 1.8.4:
- Detta är en smärre felrättningsutgåva korrigera valgrind instrumentering problem test beroenden och defekt testtid attribut i XML rapporter.
Vad är nytt i version 1.8.2:
- Denna smärre funktion förbättring gör kommandoradsparameter - -timeout-multiplikator = faktor nu även ha effekt på timeout för fixtur konstruktion och förstörelse.
Vad är nytt i version 1.8.1:
- Denna smärre funktion förbättring gör kommandoradsparameter - -timeout-multiplikator = faktor nu även ha effekt på timeout för fixtur konstruktion och förstörelse.
Vad är nytt i version 1.7.2:
- Denna version fixar en mindre bugg med NO_CORE_FILE testet modifierare som inträffade på Linux när / proc / sys / kernel / core_pattern beskrev rörledningar kärn dump till ett program i stället för att spara till en fil.
Vad är nytt i version 1.6.1:
- Detta är en patch för en bugg som i vissa fall orsakade missbildade XML-utdata genom att missa en nära på listan blocked_tests.
Vad är nytt i version 1.6.0:
- De nya funktionerna är ytterligare en valfri parameter för att ASSERT_THROW () och VERIFY_THROW () som kontrollerar värdet av ett undantag objekt, två istream baserad version av get_parameter () för att plocka värden gått från kommandoraden, och en möjlighet att bygga libcrpcut som statisk eller delat bibliotek.
Vad är nytt i version 1.5.0:
- Den stora nyheten är att tagga av tester. Taggar är ett test urvalsmetod som är vinkelrät mot den för testsuites. Tags kan också användas för att skilja mellan test som är kritiska (t.ex. regressioner) och test som är icke-kritiska (t.ex. funktionaliteten närvarande arbetade på.)
- Experimentellt stöd finns också för att dekorera testrapporter med exempelvis ANSI-färg rymningar.
Kommentarer hittades inte