Отключающий крюк не печатает на консоль в JUnit Test, выполненном через Maven
У меня есть простой тест JUnit, который запускается Maven с помощью метода, помеченного аннотацией @Test. Я хочу поместить обработчик завершения работы в этот тест, потому что я хочу напечатать некоторые результаты теста, если пользователь нажимает CTRL-C. Я кодирую следующие строки:
@Test
public void runTest() {
Thread shutdownHook = new Thread()
{
@Override
public void run()
{
System.out.println("hooked");
... print something via System.out.println ...
}
};
Runtime.getRuntime().addShutdownHook(shutdownHook);
... run test ...
}
Для запуска я использую Maven:
mvn clean test -DtestClassName = com.MyTest
Проблема в том, что ничего не печатается. Похоже, System.out.println уже не работает. Что я могу сделать, чтобы это исправить?
1 ответ
Я попытался написать модульный тест для имитации вашего случая следующим образом
@Test
public void whenTest() {
final Thread shutdownHook = new Thread()
{
@Override
public void run()
{
System.out.println("hooked");
}
};
Runtime.getRuntime().addShutdownHook(shutdownHook);
System.out.println("Start");
try {
Thread.sleep(10000);
} catch (final InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Stop");
}
Я пытаюсь выполнить с mvn clean test -Dtest=MyTest
а затем ударил Ctrl+C
, Это показывает мне как
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.test.MyTest
Start
Terminate batch job (Y/N)? y
Если я жду периода сна, он показывает мне как
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.test.MyTest
Start
Stop
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.034 sec
hooked <----- Is this your expected?
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
Я надеюсь, что это может помочь.