Chtěl bych navázat na článek Parametrizovaný JUnit test a pokračovat tak v představování vlastností JUnit, o kterých dost programátoru neví, nebo je alespoň denně nepoužívají.

Jsem zastáncem toho, aby jednotlivé testy byly co nejkratší a samozřejmě na sobě nezávislé. Raději napíšu deset testovacích metod s jedním assertem, než jednu metodu s deseti asserty (viz kritizovaný test validátoru rodných čísel). Výhodu spatřuji v tom, že při jediném běhu testu vidíte na jediný pohled všechny vadné případy. A ne že opravíte první assert, spustíte test a padne vám hned druhý assert v pořadí.

Jiné je to v případě integračních testů, například Selenium (WebDriver). Samotná příprava dat je náročná, takže je vhodné asserty sdružovat do větších celků. Ale jak z jediného běhu získat co nejvíce informací, aniž byste museli test znovu a znovu opakovat?

Existuje šikovná implementace rozhraní TestRule, v podobě ErrorCollector, který sbírá vzniklé chyby, ale reportuje je až nakonec.

Ukázka

Následuje ukázka Selenium testu (v Groovy), který ověřuje, zda mají povinná pole formuláře kolem sebe rámeček určité barvy. Jiste nechcete test ukončit po zjištěné nesrovnalosti hned na prvním poli. Zaměřte svou pozornost na řádek číslo 35, kde byste psali jako obvykle nějaký assert, ale tentokrát použijete ErrorCollectorl#checkThat. Díky anotaci @Delegate můžete vynechat referenci na errorCollector a psát pouze checkThat.

A takhle nějak může vypadat výpis v IntelliJ IDEA

Související