Ez a program egy hippodrom utánzata
Először is, az előző projekthez hasonlóan, készíts magadnak egy villát a tárolóból: https://github.com/CodeGymCC/hippodrome , és klónozd ezt a villát magad.
Az Ön feladata a tesztelés és a naplózás hozzáadása.
A kötelező vizsgálatok listája
Az alábbi listában minden tételt külön vizsgálati módszerként kell megvalósítani. A vizsgálati módszerek megnevezésekor törekedjünk tömören, de ugyanakkor úgy, hogy nagyjából megértsük, mit is tesztelnek bennük. Hasonlítsa össze például ezt a két teszteredményt:
A második esetben nehezebb megérteni, hogy milyen tesztek nem mentek át, és meg kell néznie a naplókat.
1. Lóosztály:
- konstruktőr
- Ellenőrizze, hogy a konstruktornak első paraméterként történő átadáskor a rendszer
IllegalArgumentException
dob-enull
. Ehhez használja a módszertassertThrows
; - Ellenőrizze, hogy a konstruktornak első paraméterként történő átadáskor
null
a kidobott kivétel a „Név nem lehet null” üzenetet tartalmazza-e. Ehhez üzenetet kell kapnia a fogott kivételtől, és aassertEquals
; - Ellenőrizze, hogy ha üres karakterláncot vagy csak szóköz karaktereket (szóköz, tabulátor stb.) tartalmazó karakterláncot ad át első paraméterként a konstruktornak, a . fog dobni
IllegalArgumentException
. A szóközkarakterek különböző változataival való teszteléshez a tesztet paraméterezetté kell tenni; - Ellenőrizze, hogy ha üres karakterláncot vagy csak szóköz karaktereket (szóköz, tabulátor stb.) tartalmazó karakterláncot ad át a konstruktornak első paraméterként, akkor a kidobott kivétel a "Név nem lehet üres."
- Ellenőrizze, hogy amikor negatív számot adunk át a konstruktornak második paraméterként,
IllegalArgumentException
; - Ellenőrizze, hogy ha negatív számot ad át a konstruktornak második paraméterként, a kidobott kivétel tartalmazza-e a "Sebesség nem lehet negatív." üzenetet;
- Ellenőrizze, hogy ha negatív számot adunk át a konstruktornak harmadik paraméterként,
IllegalArgumentException
; - Ellenőrizze, hogy ha negatív számot ad át harmadik paraméterként a konstruktornak, a kidobott kivétel tartalmazza-e a "A távolság nem lehet negatív." üzenetet;
- getName metódus
- Ellenőrizze, hogy a metódus visszaadja-e az első paraméterként átadott karakterláncot a konstruktornak;
- getSpeed módszer
- Ellenőrizze, hogy a metódus visszaadja-e a második paraméterként átadott számot a konstruktornak;
- getDistance módszer
- Ellenőrizze, hogy a metódus visszaadja-e a harmadik paraméterként átadott számot a konstruktornak;
- Ellenőrizze, hogy a metódus nullát ad-e vissza, ha az objektumot két paraméteres konstruktor segítségével hozták létre;
- mozgatási módszer
getRandomDouble
Ellenőrizze, hogy a metódus a 0.2 és 0.9 paraméterű metóduson belül hívja-e meg . EhhezMockedStatic
a módszerét kell használniverify
;- Ellenőrizze, hogy a módszer hozzárendeli-e a következő képlettel számított távolságértéket:
distance + speed * getRandomDouble(0.2, 0.9)
. Ehhez zárolni kell,getRandomDouble
hogy bizonyos értékeket adjon vissza, amelyeket a teszt paraméterezésével kell beállítani.
2. Hippodrome osztály:
- Konstruktőr
- Ellenőrizze, hogy a konstruktornak történő átadáskor
IllegalArgumentException
anull
; - Ellenőrizze, hogy a konstruktornak történő átadáskor
null
a kidobott kivétel tartalmazza-e a "A lovak nem lehetnek nullák." - Ellenőrizze, hogy amikor üres listát adunk át a konstruktornak, a
IllegalArgumentException
; - Ellenőrizze, hogy amikor üres listát ad át a konstruktornak, a dobott kivétel tartalmazza-e a "A lovak nem lehetnek üresek" üzenetet;
- getHorses módszer
- Ellenőrizze, hogy a metódus olyan listát ad-e vissza, amely ugyanazokat az objektumokat tartalmazza, és ugyanabban a sorrendben, mint a konstruktornak átadott lista. A Hippodrome objektum létrehozásakor adjon át egy 30 különböző lóból álló listát a konstruktornak;
- mozgatási módszer
- Ellenőrizze, hogy a metódus minden lónál meghívja-e a move metódust. A Hippodrome objektum létrehozásakor adjon át egy 50 állóból álló listát a konstruktornak, és használja a
verify
. - getWinner módszer
- Ellenőrizze, hogy a metódus a legnagyobb távolságértékkel rendelkező lovat adja vissza.
3. Főosztály
- fő módszer
- Ellenőrizze, hogy a módszer végrehajtása nem haladja meg a 22 másodpercet. Ehhez használja az Időkorlát megjegyzést. A teszt megírása után tiltsa le (használja a Letiltva megjegyzést). Így nem vesz igénybe időt az összes teszt futtatása, és ha szükséges, manuálisan is futtatható.
Amit naplózni kell
1. Főosztály:
- A hippodrom objektum létrehozása után adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
- A nyertesekkel kapcsolatos információk megjelenítése után adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry
Hippodrome osztály:
- Ha nullát adtunk át a konstruktornak, akkor a kivétel dobása előtt adjunk hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
- b. Ha üres listát adtak át a konstruktornak, akkor a kivétel kidobása előtt adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
- A konstruktor végén adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses
3. Lóosztály:
- Ha név helyett nullát adunk át a konstruktornak, akkor a kivétel megadása előtt adjunk hozzá egy bejegyzést a naplóba, például:
2022-05-31 17:34:59,483 ERROR Horse: Name is null
- Ha a konstruktornak átadott név üres, akkor a kivétel dobása előtt adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:36:44,196 ERROR Horse: Name is blank
- Ha a konstruktornak átadott sebesség kisebb, mint nulla, akkor a kivétel dobása előtt adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
- Ha a konstruktornak átadott távolság kisebb, mint nulla, akkor a kivétel megadása előtt adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
- A konstruktor végén adjon hozzá egy ilyen bejegyzést a naplóhoz:
2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]
A naplókat a hippodrome.log fájlba kell írni , amelynek a projektgyökérben kell lennie a naplók mappájában . Minden nap át kell nevezni a fájlt a hippodrome.2021-12-31.log minta szerint, és létre kell hozni helyette egy új hippodrome.log fájlt . Ehhez használja a RollingFile függeléket . Ebben az esetben a 7 napnál régebbi fájlokat törölni kell. Ehhez használhat egy konstrukciót, például:
<DefaultRolloverStrategy>
<Delete …>
<IfFileName …/>
<IfLastModified …/>
</Delete>
</DefaultRolloverStrategy>
Megkerestem a Google-ban, hogy mivel helyettesítsem három pont helyett.😊
Projektelemzés . Végzés után nézd meg!
GO TO FULL VERSION