View on GitHub

Software Engineering - HS 2024

Vorlesungswebseite für den Kurs Software Engineering der Universität Basel

Übungsblatt 4: Unit Tests und Continuous Integration

Einführung

In dieser Übung werden Sie lernen wie man mit Unit Tests arbeitet und wie Sie Builds und Tests mittels Continuous Integration pipelines automatisieren können. Neben dem Kennenlernen dieser wichtigen Werkzeuge, werden sie bei dieser Übung auch ihr Verständnis vom JabRef Code vertiefen.

1. Vorbereitung

Da wir die Änderungen der letzten Übung hier nicht benötigen, starten wir wieder vom main Branch. Wir wechseln auf den main Branch mit

git checkout main

Synchronisieren Sie ihr Repository mit den Änderungen vom upstream Repository, wie in Übung 2 beschrieben und pullen Sie vom main branch

git pull origin main

Vorbereitung

Wie immer erstellen wir zuerst für unsere Änderungen einen lokalen feature Branch und wechseln in diesen:

git branch uebung4
git checkout uebung4

Unittests

Im ersten Teil der Übung werden Sie eigene Unittest für die Klasse BibDatabase hinzufügen. Dabei werden wir

Anmerkung: Jabref verfügt über eine hervorragende Testsuite, mit über 5000 Unittests. Auch die Klasse BibDatabase ist bereits gut getestet. Unser Ziel ist nicht die Qualität der Tests oder die Testabdeckung zu verbessern, sondern das System kennenzulernen. Entsprechend sind die von Ihnen zu entwickelnden Unittests nicht ideale Beispiele für gutes Software testing.

Hinweis: Wenn Sie mit dem Bibtexformat, welches von Latex benutzt wird um Referenzen zu verwalten noch nicht vertraut sind, finden Sie hier alle Informationen.

Schreiben eigener Unittests

Schauen Sie sich die Klasse BibDatabase und die vorhandenen Unittests (in der Klasse BibDatabaseTest) an. Stellen Sie sicher, dass Sie verstehen, wozu die Klasse im Programm benutzt wird.

Erstellen Sie dann eine eigene Testklasse MyDatabaseTest (im selben Verzeichnis wie die Klasse BibDatabaseTest).

@book{brooks1987no,
  title={No silver bullet},
  author={Brooks, Frederic},
  year={1987}
}

@inproceedings{parnas1994software,
  title={Software aging},
  author={Parnas, David Lorge},
  booktitle={Proceedings of 16th International Conference on Software Engineering},
  year={1994},
}

@article{liskov1974programming,
  title={Programming with abstract data types},
  author={Liskov, Barbara and Zilles, Stephen},
  journal={ACM Sigplan Notices},
  year={1974},
}

Die Tests können Sie via der IDE einzeln ausführen, indem Sie auf den grünen Pfeil neben dem Test klicken. Mit Gradle können Sie Ihre neuen Tests einzeln ausführen, indem Sie gradlew test --tests org.jabref.model.database.MyDatabaseTest aufrufen.

Wenn Sie alle Tests erfolgreich geschrieben haben, fügen Sie die neue Datei (mit git add) dem Repository hinzu und committen Ihre Änderungen.

Github Actions

In diesem Teil der Übung lernen Sie Github Actions kennen. Lesen Sie hier was Github Actions sind und wie man diese für Java konfiguriert.

Jabref nutzt eigentlich Github Actions. Wir habe die entsprechenden Konfigurationsdateien für unsere Übungen jedoch entfernt. Schauen Sie sich im offiziellen JabRef Repository auf Github an wie Github Actions benutzt werden. Finden Sie heraus, welche Teile der Konfigurationsdateien Sie brauchen um die Unittests bei jedem Push auf Github automatisch ausführen zu können. Aktivieren Sie diese Funktion für ihr Projekt. Die Tests sollen nur ausgeführt werden, wenn Sie den Branch uebung4 auf Github pushen.

Hinweise:

Abgabe

Die Abgabe der Übung erfolgt durch push vom Übungs-Branch:

git push origin uebung4

und entsprechenden Pull Request. Geben Sie hier den Ihnen zugeordneten Reviewer (siehe diese Liste) an. (Details dazu finden sie in Übungsblatt 2.