CodeGym/Java kurs/Modul 3/Relaterat projekt: testning och loggning

Relaterat projekt: testning och loggning

TillgÀngliga

Detta program Àr en imitation av en hippodrom

Till att börja med, som i föregÄende projekt, gör dig sjÀlv en gaffel frÄn förvaret: https://github.com/CodeGymCC/hippodrome , och klona den hÀr gaffeln sjÀlv.

Din uppgift Àr att lÀgga till testning och loggning.

Lista över obligatoriska tester

I följande lista mÄste varje punkt implementeras som en separat testmetod. NÀr du kommer pÄ namn pÄ testmetoder, försök att vara kortfattad, men samtidigt sÄ att du ungefÀr kan förstÄ vad exakt som testas i dem. JÀmför till exempel dessa tvÄ testresultat:

I det andra fallet Àr det svÄrare att förstÄ vilken typ av test som inte klarade, och du mÄste titta pÄ loggarna.

1. HĂ€stklass:

  1. konstruktör
    • Kontrollera att nĂ€r den skickas till konstruktorn som den första parametern, IllegalArgumentExceptionkommer att kastas null. För att göra detta, anvĂ€nd metoden assertThrows;
    • Kontrollera att nĂ€r det skickas till konstruktorn som den första parametern null, kommer det kastade undantaget att innehĂ„lla meddelandet "Namn kan inte vara null.". För att göra detta mĂ„ste du fĂ„ ett meddelande frĂ„n det fĂ„ngade undantaget och anvĂ€nda assertEquals;
    • Kontrollera att nĂ€r du skickar en tom strĂ€ng eller en strĂ€ng som bara innehĂ„ller blanksteg (mellanslag, tab, etc.) som den första parametern till konstruktorn, kommer . att kastas IllegalArgumentException. För att testa med olika varianter av blankstegstecken mĂ„ste du göra testet parametriserat;
    • Kontrollera att nĂ€r du skickar en tom strĂ€ng eller en strĂ€ng som bara innehĂ„ller blanksteg (mellanslag, tab, etc.) till konstruktorn som första parameter, kommer det kastade undantaget att innehĂ„lla meddelandet "Namn kan inte vara tomt.";
    • Kontrollera att nĂ€r ett negativt tal skickas till konstruktorn som den andra parametern, IllegalArgumentException;
    • Kontrollera att nĂ€r ett negativt tal skickas till konstruktorn som den andra parametern, kommer det kastade undantaget att innehĂ„lla meddelandet "Hastighet kan inte vara negativ.";
    • Kontrollera att nĂ€r ett negativt tal skickas till konstruktorn som den tredje parametern, IllegalArgumentException;
    • Kontrollera att nĂ€r ett negativt tal skickas som den tredje parametern till konstruktorn, kommer det kastade undantaget att innehĂ„lla meddelandet "AvstĂ„nd kan inte vara negativt.";
  2. getName-metoden
    • Kontrollera att metoden returnerar strĂ€ngen som skickades som den första parametern till konstruktorn;
  3. getSpeed-metoden
    • Kontrollera att metoden returnerar numret som skickades som den andra parametern till konstruktorn;
  4. getDistance-metoden
    • Kontrollera att metoden returnerar numret som skickades som den tredje parametern till konstruktorn;
    • Kontrollera att metoden returnerar noll om objektet skapades med en konstruktor med tvĂ„ parametrar;
  5. flytta metod
    • Kontrollera att metoden anropar inuti metoden getRandomDoublemed parametrarna 0.2 och 0.9. För att göra detta mĂ„ste du anvĂ€nda MockedStaticdess metod verify;
    • Kontrollera att metoden tilldelar avstĂ„ndsvĂ€rdet berĂ€knat med formeln: distance + speed * getRandomDouble(0.2, 0.9). För att göra detta mĂ„ste du lĂ„sa den getRandomDoublesĂ„ att den returnerar vissa vĂ€rden som du behöver stĂ€lla in genom att parametrera testet.

2. Hippodromklass:

  1. Konstruktör
    • Kontrollera att nĂ€r den skickas till konstruktören IllegalArgumentExceptionkommer ; att kastas null;
    • Kontrollera att nĂ€r det skickas till konstruktorn nullkommer undantaget att innehĂ„lla meddelandet "Horses cannot be null.";
    • Kontrollera att nĂ€r en tom lista skickas till konstruktören, kommer ; att kastas IllegalArgumentException;
    • Kontrollera att nĂ€r du skickar en tom lista till konstruktören kommer det kastade undantaget att innehĂ„lla meddelandet "HĂ€star kan inte vara tomma.";
  2. getHorses metod
    • Kontrollera att metoden returnerar en lista som innehĂ„ller samma objekt och i samma ordning som listan som skickades till konstruktorn. NĂ€r du skapar Hippodrome- objektet skickar du en lista med 30 olika hĂ€star till konstruktören;
  3. flytta metod
    • Kontrollera att metoden anropar dragmetoden pĂ„ alla hĂ€star. NĂ€r du skapar Hippodrome-objektet, skicka en lista med 50 skenhĂ€star till konstruktören och anvĂ€nd verify.
  4. getWinner-metoden
    • Kontrollera att metoden returnerar hĂ€sten med störst distansvĂ€rde.

3. Huvudklass

  1. huvudmetod
    • Kontrollera att metoden exekveras inte lĂ€ngre Ă€n 22 sekunder. För att göra detta, anvĂ€nd Timeout-kommentaren. NĂ€r du har skrivit det hĂ€r testet, inaktivera det (anvĂ€nd anteckningen Disabled). SĂ„ det tar inte tid att köra alla tester, och om det behövs kan det köras manuellt.

Vad behöver loggas

1. Huvudklass:

  1. NÀr du har skapat hippodromobjektet lÀgger du till en post sÄ hÀr i loggen:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Efter att ha visat information om vinnarna, lÀgg till en sÄdan hÀr post i loggen:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Hippodrome klass:

  1. Om null skickades till konstruktorn, lÀgg till en post sÄ hÀr till loggen innan du kastar undantaget:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. b. Om en tom lista skickades till konstruktorn, lÀgg till en post sÄ hÀr till loggen innan du kastar undantaget:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. I slutet av konstruktorn, lÀgg till en post sÄ hÀr i loggen:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. HĂ€stklass:

  1. Om null skickas till konstruktorn istÀllet för ett namn, lÀgg till en post i loggen innan du kastar undantaget:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Om namnet som skickats till konstruktorn Àr tomt, lÀgg till en post sÄ hÀr i loggen innan du kastar undantaget:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Om hastigheten som skickas till konstruktören Àr mindre Àn noll, lÀgg till en post sÄ hÀr i loggen innan du kastar undantaget:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Om avstÄndet som skickas till konstruktorn Àr mindre Àn noll, lÀgg till en post sÄ hÀr i loggen innan du kastar undantaget:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. I slutet av konstruktorn, lÀgg till en post sÄ hÀr i loggen:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Loggar ska skrivas till filen hippodrome.log , som ska finnas i projektroten i logsmappen . Varje dag bör filen döpas om enligt mönstret hippodrome.2021-12-31.log och en ny hippodrome.log ska skapas istÀllet . För att göra detta, anvÀnd RollingFile- appendern . I det hÀr fallet bör filer som Àr Àldre Àn 7 dagar raderas. För att göra detta kan du anvÀnda en konstruktion som:

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

Googlade vad som skulle ersĂ€ttas istĂ€llet för tre prickar.😊


Projektanalys . Se efter avslutad!

Kommentarer
  • PopulĂ€r
  • Ny
  • Gammal
Du mÄste vara inloggad för att lÀmna en kommentar
Den hÀr sidan har inga kommentarer Àn