Разница между новым Message () и Message.obtain (...) в UnitTest - PullRequest
1 голос
/ 18 июня 2019

Я пишу UnitTest для метода, который получает Handler в качестве параметра, выполняет некоторую работу и в конце использует android.os.Message, как показано ниже:

Message m = Message.obtain(handler, code, payload)
m.sendToTarget()

Этот код работает как задумано во время выполнения, но при запуске в модульном тесте он вызывает исключение NullPointerException при вызове sendToTarget.

Если я создаю сообщение с доступным общедоступным (но не рекомендованным Javadoc) конструктором, например:

Message m = new Message();
m.setTarget(handler);
m.what = code;
m.obj = payload;

все работает как положено без NullPointerException.

Что не так со статическим фабричным методом Message.obtain(...) в модульных тестах? Есть ли что-то, что я должен сделать по-другому, чтобы иметь возможность использовать рекомендованный способ получения сообщения из пула вместо создания нового.

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