Методы Android для фиктивного источника данных в модульном тестировании активности

Я плохо знаком с модульным тестированием и учился использовать фреймворк jUnit для Android (используя ActivityInstrumentationTestCase2 ), но у меня возникли проблемы с разработкой того, как внедрить фиктивный источник данных и активность, например:

В активе, который у меня есть

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState,R.layout.market_screen);
        ListView products = (ListView)findViewById(R.id.product_list);
        MarketsAdapter adapter = new  MarketsAdapter(this, new ProductDataSource());
        products.setAdapter(adapter);

}

, я сейчас передаю ProductDataSource в адаптер, который подключается к веб-сервис для получения продуктов для адаптера. В моих тестах я не хочу подключаться к веб-сервису. Как лучше всего добавить фиктивный источник данных в действие для тестирования? Должен ли я создать ProductDataSource в экземпляре приложения, а затем использовать MockApplication в моих тестах для создания фиктивного источника данных?

Спасибо

Я решил, выполнив следующее в тестовом классе setUp () метод: возьмите ссылку на ListView и установите фиктивный источник данных с помощью setAdapter (MockDataSource) . Это должно выполняться в потоке пользовательского интерфейса с использованием метода runOnUiThread () .

mActivity = getActivity();
mDataSource = new FakeDataSource();     
mMarketsListView = (ListView)mActivity.findViewById(R.id.product_list);
mActivity.runOnUiThread(
      new Runnable() {
        public void run() {
          mMarketsListView.setAdapter(new MarketsAdapter(mActivity,mDataSource));

        } // end of run() method definition
   } // end of anonymous Runnable object instantiation
); // 
6
задан Ibungo 8 November 2013 в 07:52
поделиться