Timeout – zlyhanie testov v prípade časového limitu v TestNG

Timeout – zlyhanie testov v prípade časového limitu v TestNG
3 MIN
13 máj 2024

Automatické testovacie balíky majú tendenciu zaberať príliš veľa času v prípade, že prvky nie sú ľahko dostupné na interakciu. Takisto sa môže stať, že pri niektorých testoch budeme musieť čakať na výskyt nejakej asynchrónnej udalosti, aby sme mohli pokračovať vo vykonávaní testu.

V týchto prípadoch môžeme chcieť obmedziť čas vykonávania testu určením hornej hranice časového limitu, po prekročení ktorého sa testovacia metóda označí za neúspešnú. TestNG nám poskytuje atribúty timeOut na spracovanie týchto požiadaviek.

Obsah

TimeOut v TestNG

Atribútu TimeOut v rámci anotačnej metódy @Test je priradená hodnota určujúca počet milisekúnd. V prípade, že testovacia metóda prekročí hodnotu timeout, testovacia metóda je označená ako neúspešná s ThreadTimeoutException.

@Test(timeOut = 1000)

Úryvok kódu

V nasledujúcom úryvku kódu sme zadali časový limit 1000 ms. Vo vnútri testovacích metód vidíme, že je zavedená funkcia Thread.sleep() s trvaním 3 sekundy. Pri vykonaní testu si môžeme vo výstupe všimnúť, že test zlyhá s ThreadTimeoutException, pretože timeout je 1 sekunda a vykonanie testu trvá niečo vyše 3 sekundy.

@Test(timeOut = 1000)
public void timeOutTest() throws InterruptedException {
   Thread.sleep(3000);
   //Test logic
}

Výstup

FAILED: timeOutTest
org.testng.internal.thread.ThreadTimeoutException: 
Method org.testng.internal.TestNGMethod.timeOutTest() 
didn't finish within the time-out 1000