CodeGym /Java Course /Module 3 /Gerelateerd project: testen en loggen

Gerelateerd project: testen en loggen

Module 3
Niveau 5 , Les 7
Beschikbaar

Dit programma is een imitatie van een renbaan

Maak om te beginnen, net als in het vorige project, een fork voor jezelf uit de repository: https://github.com/CodeGymCC/hippodrome , en kloon deze fork zelf.

Jouw taak is om testen en loggen toe te voegen.

Lijst met vereiste tests

In de volgende lijst moet elk item als een afzonderlijke testmethode worden geïmplementeerd. Probeer bij het bedenken van namen voor testmethoden beknopt te zijn, maar tegelijkertijd, zodat u grofweg kunt begrijpen wat er precies in wordt getest. Vergelijk bijvoorbeeld deze twee testresultaten:

In het tweede geval is het moeilijker om te begrijpen wat voor soort tests niet zijn geslaagd en moet u naar de logboeken kijken.

1. Paardenklasse:

  1. constructeur
    • Controleer of als de eerste parameter aan de constructor wordt doorgegeven IllegalArgumentException, deze wordt gegenereerd null. Gebruik hiervoor de methode assertThrows;
    • Controleer of de gegenereerde uitzondering, wanneer deze wordt doorgegeven aan de constructor als de eerste parameter null, het bericht "Naam kan niet null zijn." bevat. Om dit te doen, moet u een bericht ontvangen van de gevangen uitzondering en de assertEquals;
    • Controleer of bij het doorgeven van een lege tekenreeks of een tekenreeks met alleen witruimtetekens (spatie, tab, etc.) als eerste parameter aan de constructor, . wordt gegenereerd IllegalArgumentException. Om te testen met verschillende varianten van witruimtetekens, moet u de test geparametriseerd maken;
    • Controleer of bij het doorgeven van een lege tekenreeks of een tekenreeks met alleen witruimtetekens (spatie, tab, enz.) aan de constructor als de eerste parameter, de gegenereerde uitzondering het bericht "Naam mag niet leeg zijn.";
    • Controleer of wanneer een negatief getal wordt doorgegeven aan de constructor als de tweede parameter, IllegalArgumentException;
    • Controleer of wanneer een negatief getal wordt doorgegeven aan de constructor als de tweede parameter, de gegenereerde uitzondering het bericht "Snelheid kan niet negatief zijn" bevat;
    • Controleer of wanneer een negatief getal wordt doorgegeven aan de constructor als de derde parameter, IllegalArgumentException;
    • Controleer of bij het doorgeven van een negatief getal als derde parameter aan de constructor de gegenereerde uitzondering het bericht "Afstand kan niet negatief zijn.";
  2. getName-methode
    • Controleer of de methode de tekenreeks retourneert die als eerste parameter aan de constructor is doorgegeven;
  3. getSpeed ​​​​methode
    • Controleer of de methode het getal retourneert dat als tweede parameter aan de constructor is doorgegeven;
  4. getDistance-methode
    • Controleer of de methode het getal retourneert dat als derde parameter aan de constructor is doorgegeven;
    • Controleer of de methode nul retourneert als het object is gemaakt met een constructor met twee parameters;
  5. verplaats methode
    • Controleer of de methode aanroept binnen de methode getRandomDoublemet parameters 0.2 en 0.9. MockedStaticOm dit te doen, moet je zijn methode gebruiken verify;
    • Controleer of de methode de afstandswaarde toekent die is berekend met de formule: distance + speed * getRandomDouble(0.2, 0.9). Om dit te doen, moet u het vergrendelen getRandomDoublezodat het bepaalde waarden retourneert die u moet instellen door de test te parametreren.

2. Hippodroomklasse:

  1. Constructeur
    • Controleer of wanneer doorgegeven aan de constructor IllegalArgumentException, ;wordt gegooid null;
    • Controleer of de gegenereerde nulluitzondering het bericht "Paarden kunnen niet null zijn" zal bevatten wanneer deze wordt doorgegeven aan de constructor.
    • Controleer of bij het doorgeven van een lege lijst aan de constructor, ; wordt gegooid IllegalArgumentException;
    • Controleer of bij het doorgeven van een lege lijst aan de constructor de gegenereerde uitzondering het bericht "Paarden kunnen niet leeg zijn.";
  2. getHorses-methode
    • Controleer of de methode een lijst retourneert die dezelfde objecten en in dezelfde volgorde bevat als de lijst die aan de constructor is doorgegeven. Geef bij het maken van het Hippodrome- object een lijst met 30 verschillende paarden door aan de constructeur;
  3. verplaats methode
    • Controleer of de methode de verplaatsingsmethode op alle paarden aanroept. Geef bij het maken van het Hippodrome-object een lijst met 50 neppaarden door aan de constructor en gebruik de verify.
  4. getWinner-methode
    • Controleer of de methode het paard met de grootste afstandswaarde retourneert.

3. Hoofdklasse

  1. belangrijkste methode
    • Controleer of de methode niet langer dan 22 seconden wordt uitgevoerd. Gebruik hiervoor de annotatie Time-out. Nadat u deze test hebt geschreven, schakelt u deze uit (gebruik de annotatie Uitgeschakeld). Het kost dus geen tijd om alle tests uit te voeren en indien nodig kan het handmatig worden uitgevoerd.

Wat moet er gelogd worden

1. Hoofdklasse:

  1. Nadat u het hippodroom-object hebt gemaakt, voegt u een vermelding als deze toe aan het logboek:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Voeg na het weergeven van informatie over de winnaars een vermelding als deze toe aan het logboek:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Hippodroom klasse:

  1. Als null is doorgegeven aan de constructor, voeg dan, voordat de uitzondering wordt gegenereerd, een vermelding als deze toe aan het logboek:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. B. Als er een lege lijst is doorgegeven aan de constructor, voeg dan, voordat de uitzondering wordt gegenereerd, een vermelding als deze toe aan het logboek:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Voeg aan het einde van de constructor een vermelding als deze toe aan het logboek:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Paardenklasse:

  1. Als null wordt doorgegeven aan de constructor in plaats van een naam, voeg dan voordat u de uitzondering genereert een vermelding toe aan het logboek, zoals:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Als de naam die aan de constructor is doorgegeven leeg is, voegt u voordat u de uitzondering genereert een vermelding als deze toe aan het logboek:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Als de snelheid die aan de constructor is doorgegeven lager is dan nul, voegt u voordat u de uitzondering genereert een vermelding als deze toe aan het logboek:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Als de afstand die aan de constructor is doorgegeven kleiner is dan nul, voeg dan, voordat u de uitzondering genereert, een vermelding als deze toe aan het logboek:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Voeg aan het einde van de constructor een vermelding als deze toe aan het logboek:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Logboeken moeten naar het bestand hippodrome.log worden geschreven , dat zich in de projecthoofdmap in de map logs moet bevinden . Elke dag moet het bestand worden hernoemd volgens het patroon hippodrome.2021-12-31.log en in plaats daarvan moet een nieuwe hippodrome.log worden gemaakt . Gebruik hiervoor de RollingFile- appender . In dit geval moeten bestanden ouder dan 7 dagen worden verwijderd. Om dit te doen, kunt u een constructie gebruiken zoals:

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

Googled wat te vervangen in plaats van drie puntjes.😊


Project analyse . Kijk na voltooiing!

Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION