xUnit je souhrnný název pro rodinu frameworků pro testování jednotek, jejichž struktura a funkčnost je založena na SUnit , který byl určen pro programovací jazyk Smalltalk . SUnit , vyvinutý Kentem Beckem v roce 1998, byl napsán ve vysoce strukturovaném, objektově orientovaném stylu, získal si širokou popularitu a byl adaptován do mnoha dalších jazyků. Názvy rámců v této rodině jsou tvořeny podobně jako „SUnit“, obvykle nahrazují „S“ prvním písmenem (nebo několika prvními) v názvu zamýšleného jazyka („ JUnit “ pro Java , „ NUnit “ pro softwarová platforma .NET atd.). Rodina takových rámců se společnou architekturou je běžně známá jako „xUnit“.
Všechny frameworky z rodiny xUnit mají následující základní komponenty architektury, které se mohou v různých implementacích mírně lišit [1] .
Modul je spustitelný program, který provádí testy implementované s frameworkem a zobrazuje informace o jejich průběhu [2] .
Testovací případy (testovací scénáře/případy) jsou základními prvky unit testů.
Konfigurace testu (také nazývaná kontext) je sada předdefinovaných podmínek nebo stavů objektů, které jsou nutné ke spuštění testu. Vývojář musí před provedením každého testu nastavit konfiguraci, o které ví, že je dobrá, a poté se po dokončení testu vrátit k původní konfiguraci.
Testovací sada je sada testů, které sdílejí společnou konfiguraci. Na pořadí, ve kterém testy probíhají, by nemělo záležet.
Každý test se provádí podle následujícího schématu:
nastavení (); /* Test 'kontext' je připraven jako první */ ... /* Tělo testu - zde je specifikován testovací skript */ ... stržení (); /* Po absolvování testu (bez ohledu na jeho výsledek) se kontext testu "vyčistí" */Modul, který provádí test, musí mít výstup výsledků v jednom nebo více specifikovaných formátech. Kromě normálního, člověkem čitelného textu jsou výsledky často vydávány ve formátu XML .
Výrok v testu je funkce nebo makro, které testuje chování nebo stav testované jednotky. Aserce je často test, který má zjistit, zda se některý parametr modulu rovná nebo nerovná očekávanému výsledku. Neúspěch testu vede k selhání celého testovacího skriptu a (je-li to nutné) k výjimce , která skript zastaví, aniž by přešel k dalšímu příkazu.
Rámce s architekturou specifickou pro xUnit existují pro mnoho programovacích jazyků a vývojových platforem. Příklady:
Další příklady: