Návod/Testy
Z RoboCupTP wiki
Ako je popísané v príslušnej časti, počas behu test frameworku sa na pozadí vykonávajú testy zaradené do fronty. Úlohou týchto testov je vytvoriť určitú hernú situáciu, nechať agenta konať a po dosiahnutí výsledku (splnení kritérií na ukončenie testu) skončiť s určitým výsledkom.
Testy sú implementované v triedach dediacich od TestCase
. Základný princíp spočíva v implementácii metódy isStopCriterionMet, ktorá má vrátiť true ak test skončil, a metódy evaluate, ktorá má vrátiť výsledok testu ako objekt triedy TestCaseResult
. Tá momentálne obsahuje len jednu double hodnotu.
Skončenie testu sa dá sledovať pomocou observeru ITestCaseObserver
.
Testy zobrazené v GUI sú zapísané v triede TestCaseList
. Táto nepracuje priamo s testami, ale s ich dodatočnými triedami, ktoré tieto testy obaľujú. Tie slúžia na automatizovanie spustenia viacerých vykonaní toho istého testu po sebe, a vrátenie nejakého súhrnného výsledku (väčšinou minimum alebo maximum). Príkladom je napríklad trieda KickDistance
, používajúca test KickDistanceTest
. Z týchto obalových tried sa však nedá v kóde nejak rozumne zistiť, kedy skončili, svoj výsledok len logujú.
Jedným z problémov testov je, že niektoré z nich počítajú s prítomnosťou agenta s určitým menom tímu, a celkovo nie sú dosť robustné pre vysporiadanie sa s nečakanými situáciami. Preto by bolo vhodné do triedy AgentManager implementovať neajkú metódu, ktorá by pripravila čisté prostredie pre vykonávanie testu (odstránenie všetkých iných agentov, nastavenie hernej situácie, ...) a vrátila agenta vhodného pre beh testu, aby to nemusel každý jednotlivý test robiť po svojom (okrem špecifík potrebných pre daný test).