4it101»J Unit 22

J Unit 22

Implicitní přístup

Další alternativou, kterou lze uplatnit v případě složitější logiky testovacích metod, je takzvaný implicitní přístup vytváření testovacího přípravku. V něm dochází k vytvoření přípravku ve zvláštní metodě s anotací @Before, respektive @BeforeClass. Při volání těchto metod, což je zajištěno automaticky testovacím frameworkem, nedochází k tomu, aby testovací metody mohli operovat s týmiž instancemi testovacího přípravku. To se hodí zejména v případech, které vyžadují práci s identickým testovacím přípravkem, který může být použit zvláště pro všechny testovací metody testovací třídy. Testovací přípravek je tedy v případě použití anotace @Before vytvářen implicitně před voláním každé zkušební metody, a v případě použití anotace @BeforeClass dojde k vytvoření přípravku jednou a bude platný pro celou třídu během testování. V následujícím příkladu v metodě s anotací @Before dochází k přípravě prostředí, které bude použito při testování. K vytvoření tohoto přípravku dochází před každým voláním testovacích metod, čímž je zajištěno, že jednotlivé zkušební metody nepracují se shodnými instancemi objektů vytvořených testovacím přípravkem.

(:source lang=Java -trim +getcode:) Objednavka objednavka; Kniha kniha1; Kniha kniha2; @Before public void setUp() { objednavka = new Objednavka(123); objednavka.setOtvorena(true); kniha1 = new Kniha(456); kniha1.setCena(15.99); kniha2 = new Kniha(789); kniha2.setCena(22.95); } @Test public void testPripravok4() { objednavka.pridejPolozku(kniha1); objednavka.setOtevrena(false); //neni mozne odebrat knihu z uzavrete objednavky assertFalse(objednavka.odeberPolozku1(kniha1)); } @Test public void testPripravok5() { objednavka.pridejPolozku(kniha1); objednavka.pridejPolozku(kniha2); //overeni scitani cien polozek v obejdnavce //delta bila stanovena na 0.0 assertEquals(38.94, objednavka.getSuma(), 0.0); }