Hallo allerseits,
es geht um eine sehr kuriose Aufgabenstellung!
Wir haben ein Interface gegeben mit einer Dokumentation. Nun gibt es verschiedene Implementationen dieses Interfaces mit Fehlern, die wir mithilfe von TestCases in JUnit ausfindig machen sollen.
Einer dieser "Fehler" besteht darin, dass vier Threads erzeugt werden und jeder parallel in for-Schleifen einen Zähler 100x inkrementiert. Am Ende wird das Ergebnis zurückgegeben (meistens 400).
Nun lautet die Aufgabenstellung, dass man einen TestCase schreiben soll, der diesen Fehler möglichst häufig findet. Wie soll man das denn bewerkstelligen? Mehr als diese Funktion aufrufen kann ich schließlich ja nicht!
Liebe Grüße!
es geht um eine sehr kuriose Aufgabenstellung!
Wir haben ein Interface gegeben mit einer Dokumentation. Nun gibt es verschiedene Implementationen dieses Interfaces mit Fehlern, die wir mithilfe von TestCases in JUnit ausfindig machen sollen.
Einer dieser "Fehler" besteht darin, dass vier Threads erzeugt werden und jeder parallel in for-Schleifen einen Zähler 100x inkrementiert. Am Ende wird das Ergebnis zurückgegeben (meistens 400).
Nun lautet die Aufgabenstellung, dass man einen TestCase schreiben soll, der diesen Fehler möglichst häufig findet. Wie soll man das denn bewerkstelligen? Mehr als diese Funktion aufrufen kann ich schließlich ja nicht!
Java:
@Test
public void problemClass4Failure() {
try {
int parallelCounter = implementation.parallelCounter( 4 ); // rarely fails
assertEquals( 400, parallelCounter );
} catch( InterruptedException e ) {
e.printStackTrace();
}
}
Liebe Grüße!