Отключающий крюк не печатает на консоль в 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

Я надеюсь, что это может помочь.

Другие вопросы по тегам