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.


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