2016-10-06 3 views
2

Когда в тесте JUnit появляется неожиданное событие RuntimeException, на вкладке Результаты тестирования NetBeans отображается имя провала теста, за которым следует трассировка стека.Отображение (неожиданных) сообщений об исключениях в тестах JUnit (Netbeans)

Ex.

someFailedTest caused an ERROR: at (stack trace lines start here)

Не так полезно, как могло бы быть.

В то время как трассировка стека позволяет нам отслеживать, где возникла проблема, было бы неплохо, если бы NB также показывал любое сообщение, сопровождавшее исключение. (Пример «x должен быть> 0, но был -2» или что-то еще.)

Насколько я могу судить, похоже, что данные не доступны. Есть ли способ показать детали исключения, которые мне не хватает?

Я мог бы использовать try/catch или журнал ошибок, но есть ли лучший способ?

Вот пример (поддельный) «тест», который ясно показывает сообщение в Eclipse, но не в NB. Любое понимание приветствуется ... да, я знаю, что это исключение , но это тот же самый тип проблемы.

@Test 
    public void testTest() { 

     String file = "test"; 
     File f = new File("../" + file); 
     if (!f.exists()) { 
      Assert.fail("File was not found at " + file); 
     } 
    } 

Edit ... Да, немного запутался сейчас - я видел, что это работает правильно, по крайней мере один или два раза, но я не в состоянии воспроизвести его сейчас. Мне нужно посмотреть, смогу ли я воспроизвести где-нибудь я смогу опубликовать скриншоты позже ...

Редактировать # 2 ... Обнаружено какое-то поведение незнакомцев. Если я сделаю это (который будет моим обходным на сегодняшний день), список результатов испытаний по-прежнему выглядит так же, но я получить хорошее красное и очень полезное сообщение об ошибке в консоли:

String msg = "FXML file was not found at " + file; 
System.err.print("test"); 
Assert.fail(msg); 

Но если Я полностью комментирую строку System.err, я ничего не получаю в консоли. Еще более странно, если бы я поставил пустую строку, я до сих пор ничего не получить в консоли вообще (ну, может быть, печать() достаточно умен, чтобы игнорировать пустую строку ..):

String msg = "FXML file was not found at " + file; 
System.err.print(""); 
Assert.fail(msg); 
+0

Я не могу воспроизвести проблему вы с описанием на всех, как это описано в моем ответе.Кроме того, я смущен тем, что вы скажете «вкладку результатов тестирования NetBeans», но позже упомяните «консоль». Можете ли вы опубликовать фактический снимок экрана вкладки «Результаты тестирования NetBeans», которую вы видите с помощью точного тестового кода, который вы используете? – DavidS

+0

Я понимаю, что это сбивает с толку, потому что я не могу просто поставить screencap в то же время - попробую получить это сегодня вечером, чтобы это имело смысл. – User

ответ

0

Я знаю, что это не что вы хотите услышать, но я считаю, что стандартный способ сделать то, что вы хотите использовать примерочных поймать так:

try{ 
    .... 
}catch(Throwable t){ 
    //Add some code to print the details of the Throwable here 
    fail(t.getMessage()); 
} 

Я не в курсе каких-либо настроек, которые позволят вам сказать Netbeans/JUnit, чтобы отобразить сообщение неперехваченного исключения/throwable.

+0

Если это ответ, я думаю, что, похоже, Eclipse (IIRC) может справиться с этим лучше, но может помнить неправильно ... – User

0

My Netbeans показывает сообщение. Вот пример:

junit example with message

Может Netbeans не показывать сообщение при некоторых обстоятельствах. Возможно, ваше исключение верхнего уровня не имеет связанного с ним сообщения. Я использую Netbeans 8.1, и я не внес никаких изменений в конфигурацию.

Вот пример, который вы опубликовали. Сообщение также видно здесь.

second junit example with message

+0

На самом деле я просто тестировал его в Eclipse, и если я не ослеп, он показывает сообщение, которое не отображается в NB. Теперь обновим вопрос на примере. – User

+0

Я все еще получаю сообщение с вашим примером test @Manius. См. Мое обновление. – DavidS

+0

Да, я только что запустил его и заметил одно и то же, но снова бег не показывал никаких сообщений! Я не уверен, что происходит сейчас - нужно провести некоторое тестирование ... – User