Ich bin ein JUnit 4 Test mit @RunWith(value = Parameterized.class)
. Das funktioniert gut, keine Probleme dort. Jedoch, wenn einer meiner 34 Tests Timeout, bekomme ich nur die Nachricht java.lang.Exception: test timed out after 15000 milliseconds
. Ich möchte, dass es auch den Parameter des Tests zeigt.Weitere Informationen hinzufügen, wenn JUnit 4 Timeouts mit parametrierter Runner
Ich habe sogar versucht, es wie der Code unten zu tun (was ich weiß, ist eine schreckliche Lösung für die meisten Fälle, ich wollte nur sehen, ob ich die Nachricht überhaupt irgendwann zeigen konnte), aber das tat es nicht Arbeit, es ergab sich immer noch die obige Nachricht.
private String parameter;
@Test(timeout = 15000)
public void solveAll() {
try {
// ... do something that might take a long time
}
catch (Throwable e) {
Assert.fail(this.parameter + " failed! Because of " + e.getMessage());
}
}
Wie kann ich JUnit zeigt auch this.parameter
, wenn die Testergebnisse in einem Timeout?
Hier ist ein sehr einfaches Beispiel Testklasse, die dieses Problem zeigt:
public class ShowMyMessageTest {
@Test(timeout=1000)
public void test() {
try {
Thread.sleep(3000);
}
catch (Throwable e) {
Assert.fail("Timeout reached with value 42");
}
}
}
Mit diesem ShowMyMessageTest
bekomme ich manchmal die erwartete „Timeout mit dem Wert 42 erreicht“, und manchmal bekomme ich nur „java.lang. Ausnahme: Test nach 1000 Millisekunden abgelaufen ". Ich möchte in diesem Fall immer "Timeout erreicht mit Wert 42" bekommen.
Ihre Hacky-Lösung mit @After funktioniert gut genug für mich :) –