Acest program este o imitație a unui hipodrom

Pentru început, ca și în proiectul anterior, fă-ți o furcă din depozit: https://github.com/CodeGymCC/hippodrome și clonează singur această furcă.

Sarcina ta este să adaugi testarea și înregistrarea în jurnal.

Lista testelor necesare

În lista următoare, fiecare element trebuie implementat ca metodă de testare separată. Când veniți cu nume pentru metodele de testare, încercați să fiți concis, dar în același timp, astfel încât să puteți înțelege aproximativ ce anume este testat în ele. De exemplu, comparați aceste două rezultate ale testului:

În al doilea caz, este mai dificil de înțeles ce fel de teste nu au trecut și va trebui să te uiți la jurnalele.

1. Clasa de cai:

  1. constructor
    • Verificați că atunci când este transmis la constructor ca prim parametru IllegalArgumentException, va fi aruncat null. Pentru a face acest lucru, utilizați metoda assertThrows;
    • Verificați că atunci când este transmisă constructorului ca prim parametru null, excepția lansată va conține mesajul „Numele nu poate fi nul.”. Pentru a face acest lucru, trebuie să primiți un mesaj de la excepția prinsă și să utilizați assertEquals;
    • Verificați că atunci când treceți un șir gol sau un șir care conține doar caractere cu spații albe (spațiu, tab, etc.) ca prim parametru către constructor, va fi aruncat IllegalArgumentException. Pentru a testa cu diferite variante de caractere cu spații albe, trebuie să parametrizați testul;
    • Verificați ca atunci când treceți un șir gol sau un șir care conține doar caractere spații albe (spațiu, tab, etc.) constructorului ca prim parametru, excepția aruncată va conține mesajul „Numele nu poate fi necompletat.”;
    • Verificați că atunci când un număr negativ este transmis constructorului ca al doilea parametru, IllegalArgumentException;
    • Verificați că atunci când un număr negativ este transmis constructorului ca al doilea parametru, excepția aruncată va conține mesajul „Viteza nu poate fi negativă.”;
    • Verificați că atunci când un număr negativ este transmis constructorului ca al treilea parametru, IllegalArgumentException;
    • Verificați că atunci când treceți un număr negativ ca al treilea parametru către constructor, excepția aruncată va conține mesajul „Distanța nu poate fi negativă.”;
  2. metoda getName
    • Verificați dacă metoda returnează șirul care a fost transmis ca prim parametru constructorului;
  3. metoda getSpeed
    • Verificați dacă metoda returnează numărul care a fost transmis ca al doilea parametru constructorului;
  4. metoda getDistance
    • Verificați dacă metoda returnează numărul care a fost transmis ca al treilea parametru constructorului;
    • Verificați dacă metoda returnează zero dacă obiectul a fost creat folosind un constructor cu doi parametri;
  5. metoda mutarii
    • Verificați dacă metoda apelează în interiorul metodei getRandomDoublecu parametrii 0.2 și 0.9. Pentru a face acest lucru, trebuie să utilizați MockedStaticmetoda sa verify;
    • Verificați dacă metoda atribuie valoarea distanței calculată prin formula: distance + speed * getRandomDouble(0.2, 0.9). Pentru a face acest lucru, trebuie să îl blocați, getRandomDoubleastfel încât să returneze anumite valori pe care trebuie să le setați prin parametrizarea testului.

2. Clasa hipodrom:

  1. Constructor
    • Verificați că atunci când este transmis constructorului IllegalArgumentException, va fi aruncat null;
    • Verificați că atunci când este transmisă la constructor null, excepția aruncată va conține mesajul „Caii nu pot fi nuli.”;
    • Verificați că atunci când treceți o listă goală către constructor, va fi aruncat IllegalArgumentException;
    • Verificați că atunci când treceți o listă goală către constructor, excepția aruncată va conține mesajul „Caii nu pot fi goale.”;
  2. metoda getHorses
    • Verificați dacă metoda returnează o listă care conține aceleași obiecte și în aceeași ordine ca lista care a fost transmisă constructorului. Când creați obiectul Hipodrome , transmiteți constructorului o listă de 30 de cai diferiți;
  3. metoda mutarii
    • Verificați dacă metoda apelează la metoda mutarii pe toți caii. Când creați obiectul Hipodrome, transmiteți constructorului o listă de 50 de cai simulați și utilizați verify.
  4. metoda getWinner
    • Verificați dacă metoda returnează calul cu cea mai mare valoare a distanței.

3. Clasa principală

  1. metoda principala
    • Verificați dacă metoda este executată nu mai mult de 22 de secunde. Pentru a face acest lucru, utilizați adnotarea Timeout. După ce ați scris acest test, dezactivați-l (utilizați adnotarea Dezactivată). Deci nu va dura timp pentru a rula toate testele și, dacă este necesar, poate fi rulat manual.

Ce trebuie înregistrat

1. Clasa principală:

  1. După crearea obiectului hipodrom, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. După afișarea informațiilor despre câștigători, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Clasa hipodrom:

  1. Dacă null a fost transmis constructorului, atunci înainte de a arunca excepția, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Dacă o listă goală a fost transmisă constructorului, atunci înainte de a arunca excepția, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. La sfârșitul constructorului, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Clasa de cai:

  1. Dacă null este transmis constructorului în loc de nume, atunci înainte de a arunca excepția, adăugați o intrare în jurnal ca:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Dacă numele transmis constructorului este gol, înainte de a arunca excepția, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Dacă viteza transmisă constructorului este mai mică decât zero, atunci înainte de a arunca excepția, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Dacă distanța transmisă constructorului este mai mică decât zero, atunci înainte de a arunca excepția, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. La sfârșitul constructorului, adăugați o intrare ca aceasta în jurnal:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Jurnalele ar trebui să fie scrise în fișierul hippodrome.log , care ar trebui să fie localizat în rădăcina proiectului din folderul jurnalele . În fiecare zi, fișierul ar trebui redenumit în funcție de modelul hippodrome.2021-12-31.log și ar trebui creat un nou hippodrome.log . Pentru a face acest lucru, utilizați aplicația RollingFile . În acest caz, fișierele mai vechi de 7 zile ar trebui șterse. Pentru a face acest lucru, puteți utiliza o construcție ca:

<DefaultRolloverStrategy>
    <Delete>
        <IfFileName/>
        <IfLastModified/>
    </Delete>
</DefaultRolloverStrategy>

Am căutat pe Google ce să înlocuiți în loc de trei puncte.😊


Analiza proiectului . Urmăriți după finalizare!