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.
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);
}