我一直在努力解决这个问题,我认为我没有得到关于Robolectric的一些基本信息.通常一些谷歌搜索可以帮助我解决这类问题的底部,但在此之间,看看示例代码,我找不到任何有用的东西.
我试图模拟列表视图项的单击并检查单击后是否启动了一个活动.我一直回想起我正在测试的当前活动是由此产生的活动.我尝试删除所有列表项单击代码并检查生成的活动,然后将其作为我正在测试的InstallationListActivity返回.所以我得出的结论是列表视图项没有被点击,我只是不确定为什么.我在下面的测试代码中设置的系统日志是我期望的值.该列表是13项,getChildAt(0)返回标题.我认为获取第一个项目(getChildAt(1))并在其上调用performClick或其子文本视图将启动我的预期活动,但似乎并非如此.无论如何,这是我正在使用的robolectric /测试代码:
@Before
public void setUp() {
mAppLaunch = new ApplicationLaunchActivity();
mAppLaunch.onCreate(null);
mActivity = new InstallationListActivity();
mActivity.onCreate(null);
}
@Test
public void shouldHaveNonEmptyInstallationList() throws Exception {
assert(mActivity.installationListCount() > 0);
}
@Test
public void shouldHaveSameNumberOfElements() throws Exception {
ListView installationListView = (ListView) mActivity.getListView();
ShadowListView shadowListView = shadowOf(installationListView);
assert(shadowListView.getChildCount() == mActivity.installationListCount());
}
@Test
public void pressingTheFirstItemInTheListShouldLaunchVenueListActivity() {
ListView installationListView = (ListView) mActivity.findViewById(android.R.id.list);
System.out.println("qty: " + installationListView.getChildCount());
System.out.println("class: " + installationListView.getChildAt(0).getClass());
System.out.println("class: " + installationListView.getChildAt(1).getClass());
System.out.println("class: " + installationListView.getChildAt(2).getClass());
System.out.println("class: " + installationListView.getChildAt(3).getClass()); …Run Code Online (Sandbox Code Playgroud) testing android integration-testing robolectric android-testing