Напомним, что метод calculate() теперь вызывается в методе doInBackground() класса
AsyncTask. Данный метод вызывается не в основном потоке, а инструмент
getInstrumentation().waitForIdleSync() ждёт пока очередь у основного потока будет не пустой. Вследствие чего возникает проблема в том, что проверка результата происходит раньше, чем все потоки синхронизируются. Что нас, конечно же, не устраивает.
В связи с этим возникает потребность осуществлять искусственную синхронизацию для корректного прохождения теста.
Сделать это можно следующими способами:
- getInstrumentation().waitForIdleSync()
- Synchronized