после слежки за объектом потока, thread.start (), thread.join () не работают。 - PullRequest
0 голосов
/ 14 апреля 2020

Я не могу найти никакой документации, в которой конкретно упоминается шпион объекта потока с помощью mockito. Но я проверил, используя следующий код (с mockito 1.8.5):

@Test
public void testThread() throws InterruptedException
{
    Thread threada = spy( new Thread( new Runnable()

    {
        @Override
        public void run()
        {
            System.out.println( "on thread" );
        }
    } ) );
    threada.start();
    //threada.join();
    System.out.println( "finished test" );
}

«В потоке» не распечатывается, если я вставлю threada.join (), я получил исключение:

Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "Thread-1"
finished test

Если я удалю «spy ()», я получу оба отпечатка («без резьбы» и «законченный тест»), и исключений нет. Почему я не могу шпионить за объектом Thread?

1 Ответ

1 голос
/ 14 апреля 2020

Пожалуйста, используйте текущую версию Mockito (2.X вместо 1.8.5). Я проверил ваш код, и проблема воспроизводится на 1.8.5 и исчезла на 2.X

2.X. значительное изменение - оно изменило движок создателя макетов с CGLIB на ByteBuddy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...