Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Privacy
    • Imprint
    • Contact
    • Login methods
  • Sign in
  • D Dozentron
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 30
    • Issues 30
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Dozentron
  • Dozentron
  • Issues
  • #35
Closed
Open
Created Jun 12, 2017 by Christopher Schölzel@cslz90🐃Owner

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 als add(7) und add(-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) und add(-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 Signatur add(int) verweist.

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?

Assignee
Assign to
Time tracking