Я плохо знаком с модульным тестированием и учился использовать фреймворк 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
); //