Size: a a a

StartAndroid Ru Testing

2019 February 18

N

Nikolay in StartAndroid Ru Testing
вопрос совсем не понятен 🙂
источник

AS

Akbolat Sss in StartAndroid Ru Testing
Nikolay
вопрос совсем не понятен 🙂
Для multithreading'a использую Executor. И если этот executor инициализируется от Looper.getMainLooper(), то запуская через него new Runnable, ничто не работает.

Уже исправил 👍
источник

AS

Akbolat Sss in StartAndroid Ru Testing
Я ошибался, совсем не то исправлял.
Дело в том, что метод который я хочу протестировать запускает внутри себя Runnable в фоновом потоке и выполняет вычисления.
Так вот, как можно сказать Robolectric'y, что необходимо дождаться результата, а после уже продолжать делать ассёрты?
источник

N

Nikolay in StartAndroid Ru Testing
к сожалению, я никогда не тестировал Executor. Но думаю там даже Robolectric не нужен. Зачем он вам?
источник

AS

Akbolat Sss in StartAndroid Ru Testing
Nikolay
к сожалению, я никогда не тестировал Executor. Но думаю там даже Robolectric не нужен. Зачем он вам?
Тестовый класс помечен @RunWith(AndroidJUnit4.class)
Насколько я знаю, если он находится в пакете test, то при запуске любого теста делегируется RobolectricRunner'y
источник

N

Nikolay in StartAndroid Ru Testing
насколько мне известно, это не верное утверждение. Поскольку у Роболектрика есть свой раннер. И пишет оно так - @RunWith(RobolectricTestRunner::class)
источник

N

Nikolay in StartAndroid Ru Testing
покажите код который вы тестируете
источник

AS

Akbolat Sss in StartAndroid Ru Testing
Nikolay
насколько мне известно, это не верное утверждение. Поскольку у Роболектрика есть свой раннер. И пишет оно так - @RunWith(RobolectricTestRunner::class)
источник

AS

Akbolat Sss in StartAndroid Ru Testing
источник

N

Nikolay in StartAndroid Ru Testing
окей, сорри, был не прав
источник

AS

Akbolat Sss in StartAndroid Ru Testing
Nikolay
покажите код который вы тестируете
источник

AS

Akbolat Sss in StartAndroid Ru Testing
то что находится внутри лямбды, не успевает выполниться
источник

AS

Akbolat Sss in StartAndroid Ru Testing
я пробовал дебажить, поставив брэйкпоинты. Дебаггер запускается и через секунду-две вырубается, т.к. тест уже завершился
источник

N

Nikolay in StartAndroid Ru Testing
даже не знаю. Попробуйте sleep или чтото похожее на InstantTaskExecutorRule
источник

AS

Akbolat Sss in StartAndroid Ru Testing
Nikolay
даже не знаю. Попробуйте sleep или чтото похожее на InstantTaskExecutorRule
пока придётся через sleep((
источник

AT

Andrew Tomash in StartAndroid Ru Testing
Akbolat Sss
пока придётся через sleep((
твоя цель перевести все екзекуторы на один тред для тестинга
источник

AT

Andrew Tomash in StartAndroid Ru Testing
для теста rx обычно делается что-то подобное со скедулерами
источник

N

Nikolay in StartAndroid Ru Testing
ну да, для ArchComponents они это сами сделали в InstantTaskExecutorRule который упоминал выше
источник

AT

Andrew Tomash in StartAndroid Ru Testing
у меня в базовом тесте есть такие строчки для этого
@Before
   @Throws(Exception::class)
   open fun setUp() {
       RxJavaHooks.setOnIOScheduler { AndroidSchedulers.mainThread() }
       RxJavaHooks.setOnNewThreadScheduler { AndroidSchedulers.mainThread() }
       RxJavaHooks.setOnComputationScheduler { AndroidSchedulers.mainThread() }
   }
источник

AT

Andrew Tomash in StartAndroid Ru Testing
я подозреваю, что и в его случае можно подменить экзекуторы
источник