Re-kompilieren der Tests mit Studentencode
@dalt40 , korrigiere mich, wenn ich falsch liege: Im Moment läuft es auf Dozentron doch so, dass du die Tests mit einem Stub vorkompilierst, bevor sie gegen den Studentencode gelinked werden, oder? Also die Unit-Tests werden nicht für jeden Studierenden neu kompiliert.
Wenn es so wäre würde das nämlich zumindest die Fehler erklären, die einige unserer Studierenden in die Verzweiflung treiben. Beispiel:
- Der Test verlangt eine Methode
add(int)
und ruft diese alsadd(7)
undadd(-1)
auf. - Der Studierende schreibt eine (korrekte) Methode
add(Integer)
. - Auf dem lokalen System des Studierenden kompiliert der Code mit dem Test natürlich problemlos, weil
add(7)
undadd(-1)
auch mit der geänderten Signatur funktionieren. - Auf Dozentron kommt allerdings der Fehler, dass die Methode
add(int)
nicht gefunden wurde.- Das ließe sich erklären, wenn im Bytecode des JUnit-Tests eben schon die statische Information mit drin sitzt, dass
add(7)
auf eine Methode mit der Signaturadd(int)
verweist.
- Das ließe sich erklären, wenn im Bytecode des JUnit-Tests eben schon die statische Information mit drin sitzt, dass
Diese Sorte von Fehlern ist sowohl für Studierende als auch für Tutoren kontraintuitiv. Man kann sie zwar lösen, wenn man sehr genau nach den Signaturen schaut, aber die JUnit-Tests sollten sich tatsächlich möglichst lokal genauso verhalten wie online.
Ich würde daher folgendes Vorgehen zum Ausführen der Tests vorschlagen:
- Studenden-JAR extrahieren in Ordner
xyz
- Test-JAR (ohne Stub, falls sich das trennen lässt) extrahieren in Ordner
xyz
- => unsere Tests überschreiben eventuelle geänderte Test-Dateien der Studierenden
- Java-Dateien in Ordner
xyz
kompilieren zu einem JAR. - Aus dem neu entstandenen JAR die Tests laufen lassen.
Ginge das, oder verpeile ich da irgendetwas von dem was Dozentron momentan tut?