Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dungeon: Test contrib.entities.ChestTest.checkCreation() schlägt fehl #1622

Closed
cagix opened this issue Aug 15, 2024 · 1 comment
Closed
Labels
bug Something isn't working dungeon

Comments

@cagix
Copy link
Member

cagix commented Aug 15, 2024

Nach der Migration auf JUnit5 schlägt der Test contrib.entities.ChestTest.checkCreation() fehl. Ich frage mich allerdings, wieso dieser Test überhaupt jemals grün war? Hier werden zwei Objekt-Arrays direkt miteinander verglichen - und da es verschiedene Objekte (mit dem selben semantischen Inhalt) sind, schlägt der Test fehl. Das sollte mal behoben werden.

siehe auch #1621 (comment)

@cagix cagix added bug Something isn't working dungeon labels Aug 15, 2024
cagix added a commit that referenced this issue Aug 15, 2024
@cagix
Copy link
Member Author

cagix commented Aug 15, 2024

done in 31391ea

@cagix cagix closed this as completed Aug 15, 2024
cagix added a commit that referenced this issue Aug 16, 2024
Ich habe mich lange für JUnit 4.x ausgesprochen, u.a. weil sich JUnit5
noch nicht reif für den Praxiseinsatz angefühlte und weil es in JUnit5
keine vernünftige Möglichkeit gab (und gibt), auf Java-Ebene Testsuiten
zu definieren (man muss dann über Gradle o.ä. gehen).

Mittlerweile ist JUnit5 aus meiner Sicht reif genug, um zu wechseln.
Testsuiten kann man zwar immer noch nur extern formulieren, aber davon
machen wir hier im Projekt keinen Gebrauch. Dafür sind die Möglichkeiten
zum Testen auf Exceptions sowie für parametrisierte Tests deutlich
überlegen im Vergleich zu JUnit4.

Let's switch over.


---

Dieser PR führt die Migration von JUnit 4.x auf JUnit 5.x durch.
Betroffen sind:

- Globale Gradle-Konfiguration: Ersetzen der bisherigen
JUnit4-Abhängigkeit durch die neue JUnit5-Abhängigkeit plus Launcher
(lt. Doku wird letzterer nur für IDEs benötigt, die eine veraltete
JUnit-Version mitbringen - brauchen wir die Launcher-Konfiguration
überhaupt?!)
- Gradle-Konfiguration für die Subprojekte "game" und "dungeon":
Hinzunahme der neuen Abhängigkeiten und Deklaration der JUnit-Plattform
für die Tests
- Testsourcen in den Subprojekten "game" und "dungeon":
    - Ersetzen der Importe
- Übersetzen von `@Before` und `@After` durch die neuen Annotationen
`@BeforeEach` und `@AfterEach`
- Übersetzen von `@BeforeClass` und `@AfterClass` durch die neuen
Annotationen `@BeforeAll` und `@AfterAll`
    -  Übersetzen von `@Ignore` durch die neue Annotatione `@Disabled`
- Übersetzen von `@Test(expected = …​)` durch den Einsatz von
`Assertions.assertThrows(...​)`
- **Anpassen der Assertions**: Es wurde an einigen Stellen
`assertEquals(string, expected, actual)` verwendet. Das gibt es so nicht
mehr bzw. der String müsste als letzter Parameter übergeben werden. Da
die verwendeten Strings in der überwiegenden Mehrzahl semantisch unklar
und nur eine Wiederholung des erwarteten Wertes waren (Beispiel:
`assertEquals("es sollte 3 rauskommen", 3, something.or.other())`), habe
ich diese Strings einfach überall entfernt. Es gab einige wenige
Stellen, wo die Strings tatsächlich eine sinnvolle semantische Aussage
enthielten. Wenn jemand Zeit hat, könnte man diese Strings nochmal
wieder einbauen.
- ~~Der **Test `contrib.entities.ChestTest.checkCreation()` schlägt auf
einmal fehl**. Wenn ich mir den Test anschaue, frage ich mich, warum der
nicht auch bereits in vorher (also in JUnit4) fehlgeschlagen ist? =>
Issue #1622~~ fixed: tausche `assertEquals` gegen die korrekte Methode
für den Use-Case: `assertArrayEquals`
(31391ea).


---

closes #1583
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working dungeon
Projects
None yet
Development

No branches or pull requests

1 participant