Модульные тесты Android с несколькими потоками

У меня проблема с модульными тестами в Android.

У моего объекта MyObject есть метод start () вроде этого:

public void start() {
    final Handler onStartHandler = new Handler();
    new Thread() {
        @Override
        public void run() {
            super.run();

            onStartHandler.post(new Runnable() {
                @Override
                public void run() {
                    mIsRunning = true;
                    onStart();
                }
            });
        }
    }.start();
}

И я хочу проверить, что вызывается onStart (). Я попробовал что-то вроде этого:

public void testOnStartIsCalled() {
    assertFalse("onStart() should not be called", mMyObject.isRunning());
    mMyObject.start();
    assertTrue("onStart() should be called", mMyObject.isRunning());
    mMyObject.stop();
    assertFalse("onStop() should be called", mMyObject.isRunning());
}

Но это не работает, я думаю, это потому, что он находится в обработчике и новом потоке.

Мой тестовый класс расширяет AndroidTestCase. Что мне делать? Что лучше всего подходит для этого случая?

С уважением.

6
задан louiscoquio 11 October 2011 в 07:25
поделиться