Search
Za úkol máte napsat takové testovací metody (unit testy), které odhalí, jestli je daná implementace programu správně nebo obsahuje chyby (nesplňuje vlastnosti, které by měla). Jednotlivé (chybné) implementace k dispozici nemáte, dodané třídy jsou prázdné a jsou vytvořené pouze pro to, aby Vám IDE nehlásilo chyby.
BooleanLibTest.java
HeapTest.java
Šablonu k úloze si stáhněte zde.
lib
BooleanLibTest
heap
HeapTest
První část úkolu bude napsat obsahy dodaných testovacích metod. V druhé části pak budete testovat správnost implementací haldy bez dodaných metod. Bude tedy na Vás, zjistit, co potřebujete testovat, a jak to budete testovat.
assert
org.junit
junit.framework
Máte k dispozici 4 testované třídy, které implementují rozhraní BooleanLib. Do jejich implementací přístup nemáte, a tak je můžete testovat jen zvnějšku pomocí funkcí definovaných v rozhraní.
V souboru BooleanLibTest.java je unit testová třída, která má za úkol otestovat postupně všechny implementace knihovny BooleanLib. Konstrukci této třídy neměňte, jinak byste nebyli správně ohodnoceni! Jediné, co musíte, je vyplnit obsahy testovacích metod tak, aby testovali správně to, co mají v popisu (každá testuje jednu knihovní funkci). Odevzdávejte jen tento soubor - BooleanLibTest.java.
BooleanLib
Výsledky se zobrazují ve formě správné/špatné klasifikace chyby ve funkci. Použita je terminologie True/False Positive/Negative (viz wikipedia). Positive v našem případě znamená výskyt chyby. Cílem je mít správně klasifikované funkce pro všechny testované třídy (ve sloupečku TRUE číslo 4).
Zde máte k dispozici 8 testovaných tříd, které implementují rozhraní BinaryMinHeap. Opět nemáte k dispozici jejich implementace, ale jen definované funkce rozhraní. V souboru HeapTest.java je unit testová třída která má za úkol testovat postupně všechny implementace Heapy. Konstrukci opět neměňte, ale můžete přidávat (měli byste) Vámi zvolené množství unit testových metod (anotace @Test), které celkem dokáží pokrýt všechny chyby, které se v testovaných třídách (A-G) vyskytují.
@Test
Čím dedikovanější jednotlivé metody budou, tím lepší dostanete přehled z výsledků testování. V nich se porovnávájí Vaše metody proti vlastnostem heapy (ty jsou pouze číslovány). Jaké vlastnosti testovat si musíte určit sami, ale jednotlivé implementace musí splnit rozhraní BinaryMinHeap, kde se můžete inspirovat. Křížek označuje, že daná metoda pokrývá (je schopna najít) chyby v dané vlastnosti. Cílem je mít pokryté chyby ve všech vlastnostech. Ale pozor, nesmíte naopak chybně klasifikovat vlastnost, která funguje správně (False Negative).
BinaryMinHeap
@Before
@After
clear()
isEmpty()
Po provedení heap.clear() by měla funkce isEmpty() vždy vracet true (nezávisle na tom, jak špatně je daná knihovna implementovaná).
heap.clear()
true
(to je ale tak jediné, čím si můžete být jisti…)