Я запускаю тест JUnit 4, используя @RunWith(value = Parameterized.class)
. Это работает нормально, никаких проблем нет. Однако, когда любой из моих 34 тестов истекает, я получаю только сообщение java.lang.Exception: test timed out after 15000 milliseconds
. Я хочу, чтобы он также показывал параметр теста.
Я даже пытался сделать это, как в приведенном ниже коде (который, как я знаю, является ужасным решением для большинства случаев, я просто хотел посмотреть, смогу ли я вообще показать сообщение в любое время), но это не сработало, это все еще привело к сообщению выше.
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());
}
}
Как я могу заставить JUnit также показывать this.parameter
, когда тест заканчивается тайм-аутом?
Вот очень простой пример тестового класса, который показывает эту проблему:
public class ShowMyMessageTest {
@Test(timeout=1000)
public void test() {
try {
Thread.sleep(3000);
}
catch (Throwable e) {
Assert.fail("Timeout reached with value 42");
}
}
}
С этим ShowMyMessageTest
я иногда получаю ожидаемое «Время ожидания достигнуто со значением 42», а иногда я получаю только «java.lang.Exception: время ожидания теста истекло через 1000 миллисекунд». В этом случае я хочу всегда получать «Тайм-аут достигнут со значением 42».