KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The test looks like that (it's ActivityInstrumentationTestCase2): public void testItShowsThreeRows() { activity = getActivity(); activity.runOnUiThread(new Runnable() { public void run() { AccountsList accountsList = new AccountsList(activity, accounts); list.show(); } }); ListView listView = (ListView)activity.findViewById(R.id.list); assertEquals(3, listView.getChildCount()); } The code I'm trying to test works. But the test fails because activity.runOnUiThread returns immediately. I can insert Thread.sleep and the test turns green but it looks kinda clumsy to me. Do I have to use some thread synchronization or may be poll for some UI element to be ready? I tried to annotate it with @UiThreadTest but that doesn't work either. The code in list.show() populates a ListView via custom adapter and getView is called on another thread (not the one test runs on - and I have nothing to do with that, I have no threads or asynctasks, no nothing). The test fails again because it returns before UI is ready to be checked.
Tags (comma-separated)
Save Edits
Cancel