Мне кажется, что создание Activity unit test с утилитами жизненного цикла Robolectric (начиная с Robolectric.buildActivity()
) и шпионаже в отношении одной и той же операции с шпионами Mockito являются взаимоисключающими.
Поскольку buildActivity()
управляет конструкцией объекта Activity, единственным местом для добавления шпиона для Activity является вызов buildActivity()
. Однако шпион не работает должным образом, когда он добавляется после факта.
Это особенно верно при шпионаже за побочными эффектами методов жизненного цикла ActivityController
, таких как create()
, start()
и resume()
. Я предполагаю, что это происходит потому, что ActivityController содержит ссылку на "реальный" объект Activity, а не на шпион, который был добавлен позже.
Итак, есть ли способ отслеживать действие, которое тестируется с помощью Robolectric, так что шпион работает правильно при вызове методов жизненного цикла через Robolectric ActivityController
?