CodeGym/Java-Kurse/Modul 3: Java Professional/Verwandtes Projekt: Testen und Protokollieren

Verwandtes Projekt: Testen und Protokollieren

Verfügbar

Dieses Programm ist eine Nachahmung eines Hippodroms

Erstellen Sie sich zunächst wie im vorherigen Projekt einen Fork aus dem Repository: https://github.com/CodeGymCC/hippodrome und klonen Sie diesen Fork selbst.

Ihre Aufgabe besteht darin, Tests und Protokollierung hinzuzufügen.

Liste der erforderlichen Tests

In der folgenden Liste muss jeder Punkt als separate Testmethode implementiert werden. Versuchen Sie bei der Benennung von Testmethoden, prägnant zu sein, aber gleichzeitig, damit Sie ungefähr verstehen können, was genau darin getestet wird. Vergleichen Sie beispielsweise diese beiden Testergebnisse:

Im zweiten Fall ist es schwieriger zu verstehen, welche Tests nicht bestanden wurden, und Sie müssen sich die Protokolle ansehen.

1. Pferdeklasse:

  1. Konstrukteur
    • Überprüfen Sie, ob ein Fehler ausgelöst wird, wenn er als erster Parameter an den Konstruktor übergeben IllegalArgumentExceptionwird null. Verwenden Sie dazu die Methode assertThrows;
    • Überprüfen Sie, ob die ausgelöste Ausnahme bei Übergabe an den Konstruktor als erster Parameter nulldie Meldung „Name darf nicht null sein“ enthält. Dazu müssen Sie eine Nachricht von der abgefangenen Ausnahme erhalten und das assertEquals;
    • Überprüfen Sie, ob beim Übergeben einer leeren Zeichenfolge oder einer Zeichenfolge, die nur Leerzeichen (Leerzeichen, Tab usw.) enthält, als erster Parameter an den Konstruktor . ausgelöst wird IllegalArgumentException. Um mit verschiedenen Varianten von Leerzeichen zu testen, müssen Sie den Test parametrisieren;
    • Überprüfen Sie, ob beim Übergeben einer leeren Zeichenfolge oder einer Zeichenfolge, die nur Leerzeichen (Leerzeichen, Tab usw.) als ersten Parameter an den Konstruktor enthält, die ausgelöste Ausnahme die Meldung „Name darf nicht leer sein“ enthält.
    • Überprüfen Sie, ob, wenn eine negative Zahl als zweiter Parameter an den Konstruktor übergeben wird, IllegalArgumentException;
    • Überprüfen Sie, ob die ausgelöste Ausnahme die Meldung „Geschwindigkeit darf nicht negativ sein“ enthält, wenn eine negative Zahl als zweiter Parameter an den Konstruktor übergeben wird.
    • Überprüfen Sie, ob, wenn eine negative Zahl als dritter Parameter an den Konstruktor übergeben wird, IllegalArgumentException;
    • Überprüfen Sie, ob bei der Übergabe einer negativen Zahl als dritter Parameter an den Konstruktor die ausgelöste Ausnahme die Meldung „Entfernung darf nicht negativ sein“ enthält.
  2. getName-Methode
    • Überprüfen Sie, ob die Methode die Zeichenfolge zurückgibt, die als erster Parameter an den Konstruktor übergeben wurde.
  3. getSpeed-Methode
    • Überprüfen Sie, ob die Methode die Zahl zurückgibt, die als zweiter Parameter an den Konstruktor übergeben wurde.
  4. getDistance-Methode
    • Überprüfen Sie, ob die Methode die Zahl zurückgibt, die als dritter Parameter an den Konstruktor übergeben wurde.
    • Überprüfen Sie, ob die Methode Null zurückgibt, wenn das Objekt mit einem Konstruktor mit zwei Parametern erstellt wurde.
  5. Move-Methode
    • Überprüfen Sie, ob die Methode innerhalb der Methode mit den Parametern 0,2 und 0,9 aufruft getRandomDouble. Dazu müssen Sie MockedStaticdie entsprechende Methode verwenden verify.
    • Überprüfen Sie, ob die Methode den nach folgender Formel berechneten Entfernungswert zuweist: distance + speed * getRandomDouble(0.2, 0.9). Dazu müssen Sie ihn sperren getRandomDouble, damit er bestimmte Werte zurückgibt, die Sie durch die Parametrisierung des Tests festlegen müssen.

2. Hippodrom-Kurs:

  1. Konstrukteur
    • Überprüfen Sie, ob bei der Übergabe an den Konstruktor IllegalArgumentException; ausgelöst wird null;
    • Überprüfen Sie, ob die ausgelöste Ausnahme bei der Übergabe an den Konstruktor nulldie Meldung „Pferde dürfen nicht null sein“ enthält.
    • Überprüfen Sie, ob beim Übergeben einer leeren Liste an den Konstruktor ; ausgelöst wird IllegalArgumentException;
    • Überprüfen Sie, ob bei der Übergabe einer leeren Liste an den Konstruktor die ausgelöste Ausnahme die Meldung „Pferde dürfen nicht leer sein“ enthält.
  2. getHorses-Methode
    • Überprüfen Sie, ob die Methode eine Liste zurückgibt, die dieselben Objekte und in derselben Reihenfolge enthält wie die Liste, die an den Konstruktor übergeben wurde. Übergeben Sie beim Erstellen des Hippodrome- Objekts eine Liste mit 30 verschiedenen Pferden an den Konstruktor.
  3. Move-Methode
    • Überprüfen Sie, ob die Methode die Move-Methode für alle Pferde aufruft. Übergeben Sie beim Erstellen des Hippodrome-Objekts eine Liste mit 50 Scheinpferden an den Konstruktor und verwenden Sie die verify.
  4. getWinner-Methode
    • Überprüfen Sie, ob die Methode das Pferd mit dem größten Distanzwert zurückgibt.

3. Hauptklasse

  1. Hauptmethode
    • Stellen Sie sicher, dass die Methode nicht länger als 22 Sekunden ausgeführt wird. Verwenden Sie dazu die Timeout-Annotation. Nachdem Sie diesen Test geschrieben haben, deaktivieren Sie ihn (verwenden Sie die Annotation „Disabled“). Die Durchführung aller Tests nimmt daher nicht viel Zeit in Anspruch und kann bei Bedarf auch manuell durchgeführt werden.

Was muss protokolliert werden

1. Hauptklasse:

  1. Fügen Sie nach dem Erstellen des Hippodrome-Objekts einen Eintrag wie diesen zum Protokoll hinzu:2022-05-31 17:05:26,152 INFO Main: Start of the race. Number of participants: 7
  2. Nachdem Sie Informationen zu den Gewinnern angezeigt haben, fügen Sie dem Protokoll einen Eintrag wie diesen hinzu:2022-05-31 17:05:46,963 INFO Main: End of the race. Winner: Cherry

Hippodrom-Klasse:

  1. Wenn null an den Konstruktor übergeben wurde, fügen Sie dem Protokoll einen Eintrag wie diesen hinzu, bevor Sie die Ausnahme auslösen:2022-05-31 17:29:30,029 ERROR Hippodrome: Horses list is null
  2. B. Wenn eine leere Liste an den Konstruktor übergeben wurde, fügen Sie dem Protokoll einen Eintrag wie diesen hinzu, bevor Sie die Ausnahme auslösen:2022-05-31 17:30:41,074 ERROR Hippodrome: Horses list is empty
  3. Fügen Sie am Ende des Konstruktors einen Eintrag wie diesen zum Protokoll hinzu:2022-05-31 17:05:26,152 DEBUG Hippodrome: Created a Hippodrome with [7] horses

3. Pferdeklasse:

  1. Wenn null anstelle eines Namens an den Konstruktor übergeben wird, fügen Sie dem Protokoll einen Eintrag hinzu, bevor Sie die Ausnahme auslösen:2022-05-31 17:34:59,483 ERROR Horse: Name is null
  2. Wenn der an den Konstruktor übergebene Name leer ist, fügen Sie dem Protokoll einen Eintrag wie diesen hinzu, bevor Sie die Ausnahme auslösen:2022-05-31 17:36:44,196 ERROR Horse: Name is blank
  3. Wenn die an den Konstruktor übergebene Geschwindigkeit kleiner als Null ist, fügen Sie dem Protokoll vor dem Auslösen der Ausnahme einen Eintrag wie diesen hinzu:2022-05-31 17:40:27,267 ERROR Horse: Speed is negative
  4. Wenn der an den Konstruktor übergebene Abstand kleiner als Null ist, fügen Sie dem Protokoll vor dem Auslösen der Ausnahme einen Eintrag wie diesen hinzu:2022-05-31 17:41:21,938 ERROR Horse: Distance is negative
  5. Fügen Sie am Ende des Konstruktors einen Eintrag wie diesen zum Protokoll hinzu:2022-05-31 17:15:25,842 DEBUG Horse: Created a Horse named [Lobster] with speed [2.8]

Protokolle sollten in die Datei hippodrome.log geschrieben werden , die sich im Projektstammverzeichnis im Protokollordner befinden sollte . Jeden Tag sollte die Datei nach dem Muster hippodrome.2021-12-31.log umbenannt und stattdessen eine neue hippodrome.log erstellt werden . Verwenden Sie dazu den RollingFile- Appender . In diesem Fall sollten Dateien gelöscht werden, die älter als 7 Tage sind. Dazu können Sie ein Konstrukt wie das folgende verwenden:

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

Habe gegoogelt, was ich anstelle von drei Punkten ersetzen soll.😊


Projektanalyse . Nach Fertigstellung ansehen!

Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare