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:
- konstruktör
- Kontrollera att nÀr den skickas till konstruktorn som den första parametern,
IllegalArgumentException
kommer att kastasnull
. För att göra detta, anvÀnd metodenassertThrows
; - 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ÀndaassertEquals
; - 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.";
- getName-metoden
- Kontrollera att metoden returnerar strÀngen som skickades som den första parametern till konstruktorn;
- getSpeed-metoden
- Kontrollera att metoden returnerar numret som skickades som den andra parametern till konstruktorn;
- 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;
- flytta metod
- Kontrollera att metoden anropar inuti metoden
getRandomDouble
med parametrarna 0.2 och 0.9. För att göra detta mÄste du anvÀndaMockedStatic
dess metodverify
; - 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 dengetRandomDouble
sÄ att den returnerar vissa vÀrden som du behöver stÀlla in genom att parametrera testet.
2. Hippodromklass:
- Konstruktör
- Kontrollera att nÀr den skickas till konstruktören
IllegalArgumentException
kommer ; att kastasnull
; - Kontrollera att nÀr det skickas till konstruktorn
null
kommer 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.";
- 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;
- 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
. - getWinner-metoden
- Kontrollera att metoden returnerar hÀsten med störst distansvÀrde.
3. Huvudklass
- 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:
- 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
- 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:
- 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
- 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
- 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:
- 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
- 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
- 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
- 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
- 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!