Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
PFPDownloader Aufgabe7.5
Hallo)
Meine Implementierung leuft alle vorgebene Testfalle durch, aber EST zeigt mir trorzdem Ausrufezeichen und nicht den grunen Haken. Weiss jemand, woran es liegen kann?
Da scheints ein Problem im EST zu geben.
Wir kümmern uns so schnell wie möglich darum.
Edit:
Liegt nicht am EST ;).
Im EST werden Tests mit einem Timeout ausgeführt.
JUnit verwendet für jeden Test mit Timeout einen extra Thread.
Bei fehlerhaften Looper.prepare() Implementierungen verursacht der extra erstellte Thread einen Fehler,
da bei myLooper dann null zurückgegeben wird.
Ihr könnt das lokal testen indem ihr @Test durch @Test(timeout=1000) in euren Testcases ersetzt.
Hinweis:
Mit einem so kurzem Timeout ist es nicht moeglich ein AtomicBoolean in prepare() oder loop() zu verwenden. Das gibt ein ! EST. Die Fehlersuche ist praktisch nicht machbar, da wichtige Informationen fehlen.
Verbesserungsvorschlag:
In die Testfaelle gleich @Test(timeout=1000) mit einbauen.
PS: Ich weiss mittlerweile, dass ein AtomicBoolean voellig unnoetig ist, jedoch bei meiner Fehlersuche, warum ich ein ! im EST habe, habe ich immer nach moeglichen Race Conditions, CodeFehler, etc gesucht, nie aber in Betracht gezogen, dass das EST so kurze timeouts verwendet.
Das hat nichts mit der Länge des Timeouts zu tun.
Tests mit Timeout werden jeweils von einem extra Thread ausgeführt.
Wenn der Code in prepare() falsch ist, dann geht der Test wegen dem Threadwechsel kaputt, nicht wegen der Zeit und auch nicht wegen einem AtomicBoolean.
Es geht übrigends auch mit einem Timeout von einer Stunde kaputt ;).
Wenn man im Debugger schrittweise durch den Code gehen will, muss man vorher den Timeout entfernen.
Weil das umständlich ist, haben wir die öffentlichen Tests immer ohne Timeout online gestellt.
Wir können das aber einbauen, wenn euch das lieber ist.
Wir haben leider zu spät gemerkt, dass es bei falschem Code dadurch zu Problemen kommen kann :(.
Das haben die öffentlichen Testfälle nicht gezeigt, da alle einen gruenen Haken gegeben haben, bis ich hier erfahren, habe dass das timeout=1000 fehlt. Als ich das hinzugefügt habe, schlugen drei Testfälle fehl.
Stimmt, vll. wäre es dann besser gewesen die timeouts mit in die Testfälle als Kommentar hinzuzufügen und in der Aufgabenstellung einen entsprechenden Hinweis zu geben.