CodeGym/Java kursus/Modul 3/Relateret projekt: test og logning

Relateret projekt: test og logning

Ledig

Dette program er en efterligning af en hippodrome

Til at begynde med, som i det forrige projekt, lav dig selv en gaffel fra depotet: https://github.com/CodeGymCC/hippodrome , og klon denne gaffel selv.

Din opgave er at tilføje test og logning.

Liste over nødvendige prøver

I den følgende liste skal hvert element implementeres som en separat testmetode. Når du kommer med navne til testmetoder, så prøv at være kortfattet, men samtidig, så du nogenlunde kan forstå, hvad der præcist bliver testet i dem. Sammenlign for eksempel disse to testresultater:

I det andet tilfælde er det sværere at forstå, hvilken slags test der ikke bestod, og du bliver nødt til at se på loggene.

1. Hesteklasse:

  1. konstruktør
    • Kontroller, at når den sendes til konstruktøren som den første parameter IllegalArgumentException, vil den blive kastet null. For at gøre dette skal du bruge metoden assertThrows;
    • Tjek, at når den sendes til konstruktøren som den første parameter null, vil den kastede undtagelse indeholde beskeden "Navn kan ikke være null.". For at gøre dette skal du få en besked fra den fangede undtagelse og bruge assertEquals;
    • Tjek, at når du sender en tom streng eller en streng, der kun indeholder blanktegn (mellemrum, tabulator, osv.) som den første parameter til konstruktøren, vil . blive kastet IllegalArgumentException. For at teste med forskellige varianter af mellemrumstegn skal du gøre testen parametriseret;
    • Tjek, at når du sender en tom streng eller en streng, der kun indeholder blanktegn (mellemrum, tabulator, osv.) til konstruktøren som den første parameter, vil den kastede undtagelse indeholde beskeden "Navn kan ikke være tomt.";
    • Tjek, at når et negativt tal sendes til konstruktøren som den anden parameter, IllegalArgumentException;
    • Tjek, at når et negativt tal sendes til konstruktøren som den anden parameter, vil den kastede undtagelse indeholde beskeden "Hastighed kan ikke være negativ.";
    • Tjek, at når et negativt tal sendes til konstruktøren som den tredje parameter, IllegalArgumentException;
    • Tjek, at når du sender et negativt tal som den tredje parameter til konstruktøren, vil den kastede undtagelse indeholde meddelelsen "Afstand kan ikke være negativ.";
  2. getName-metoden
    • Tjek, at metoden returnerer den streng, der blev sendt som den første parameter til konstruktøren;
  3. getSpeed-metoden
    • Tjek, at metoden returnerer det tal, der blev sendt som den anden parameter til konstruktøren;
  4. getDistance metode
    • Tjek, at metoden returnerer det tal, der blev sendt som den tredje parameter til konstruktøren;
    • Tjek, at metoden returnerer nul, hvis objektet blev oprettet ved hjælp af en konstruktør med to parametre;
  5. flytte metode
    • Tjek at metoden kalder inde i metoden getRandomDoublemed parametrene 0.2 og 0.9. For at gøre dette skal du bruge MockedStaticdens metode verify;
    • Kontroller, at metoden tildeler afstandsværdien beregnet ved formlen: distance + speed * getRandomDouble(0.2, 0.9). For at gøre dette skal du låse den, getRandomDoubleså den returnerer visse værdier, som du skal indstille ved at parametrere testen.

2. Hippodrome klasse:

  1. Konstruktør
    • Tjek, at når det videregives til konstruktøren IllegalArgumentException, vil ; blive kastet null;
    • Tjek, at når den sendes til konstruktøren null, vil den kastede undtagelse indeholde beskeden "Heste kan ikke være null.";
    • Tjek, at når du sender en tom liste til konstruktøren, vil ; blive kastet IllegalArgumentException;
    • Tjek, at når du sender en tom liste til konstruktøren, vil den kastede undtagelse indeholde beskeden "Heste kan ikke være tomme.";
  2. getHorses metode
    • Tjek, at metoden returnerer en liste, der indeholder de samme objekter og i samme rækkefølge som den liste, der blev sendt til konstruktøren. Når du opretter Hippodrome- objektet , skal du sende en liste med 30 forskellige heste til konstruktøren;
  3. flytte metode
    • Tjek at metoden kalder flyttemetoden på alle heste. Når du opretter Hippodrome-objektet, skal du sende en liste med 50 falske heste til konstruktøren og bruge verify.
  4. getWinner-metoden
    • Tjek at metoden returnerer hesten med den største afstandsværdi.

3. Hovedklasse

  1. hovedmetode
    • Kontroller, at metoden ikke udføres længere end 22 sekunder. For at gøre dette skal du bruge Timeout-anmærkningen. Når du har skrevet denne test, skal du deaktivere den (brug annotationen Deaktiveret). Så det vil ikke tage tid at køre alle testene, og om nødvendigt kan det køres manuelt.

Hvad skal logges

1. Hovedklasse:

  1. Når du har oprettet hippodrome-objektet, skal du tilføje en post som denne til loggen:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Når du har vist oplysninger om vinderne, skal du tilføje en post som denne til loggen:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Hippodrome klasse:

  1. Hvis null blev videregivet til konstruktøren, før du kaster undtagelsen, skal du tilføje en post som denne til loggen:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Hvis en tom liste blev videregivet til konstruktøren, før du kaster undtagelsen, skal du tilføje en post som denne til loggen:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. I slutningen af ​​konstruktøren skal du tilføje en post som denne til loggen:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Hesteklasse:

  1. Hvis null sendes til konstruktøren i stedet for et navn, skal du tilføje en post til loggen, før du kaster undtagelsen:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Hvis navnet, der er sendt til konstruktøren, er tomt, skal du tilføje en post som denne til loggen, før du kaster undtagelsen:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Hvis hastigheden, der sendes til konstruktøren, er mindre end nul, før du kaster undtagelsen, skal du tilføje en post som denne til loggen:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Hvis afstanden til konstruktøren er mindre end nul, før du kaster undtagelsen, skal du tilføje en post som denne til loggen:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. I slutningen af ​​konstruktøren skal du tilføje en post som denne til loggen:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Logs skal skrives til hippodrome.log- filen , som skal være placeret i projektets rod i logs- mappen . Hver dag skal filen omdøbes i henhold til mønsteret hippodrome.2021-12-31.log og en ny hippodrome.log skal oprettes i stedet . For at gøre dette skal du bruge RollingFile- appenderen . I dette tilfælde skal filer, der er ældre end 7 dage, slettes. For at gøre dette kan du bruge en konstruktion som:

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

Googlede, hvad der skulle erstattes i stedet for tre prikker.😊


Projektanalyse . Se efter færdiggørelse!

Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu