android 列表视图的仪器测试
android instrumentation test for listview
我写了一个用于执行列表视图测试的代码(即,我们可以检查项目在列表视图中的位置,当我们点击列表中的项目时显示 toast messame)。当我们单击 android 中的列表项时,我想移动到另一个 activity。
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> main = new ActivityTestRule<MainActivity>(MainActivity.class) {
@Override
protected void beforeActivityLaunched() {
Intents.init();
super.beforeActivityLaunched();
}
@Override
protected void afterActivityFinished() {
super.afterActivityFinished();
Intents.release();
}
};
}
这里我写了一个测试来计算列表中的项目数
@Test
public void testShouldLaunchTheMainActivityAndFindItemsInTheList() throws Exception {
ListView listview = (ListView) main.getActivity().findViewById(R.id.PhoneVideoList);
assertThat((int) listview.getCount(), is(61));
}
这里我写了一个测试来执行点击列表项
@Test
public void testShouldTestTheItemNameInTheList() throws Exception {
ListView listview = (ListView) main.getActivity().findViewById(R.id.PhoneVideoList);
listview.performItemClick(listview.getChildAt(1), 1, listview.getAdapter().getItemId(1));
listview.performItemClick(listview.getChildAt(4), 4, listview.getAdapter().getItemId(4));
listview.performItemClick(listview.getChildAt(10), 10, listview.getAdapter().getItemId(10));
}
@Test
public void testShouldShowTheItemDetailWhenAnItemIsClicked() {
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
final ListView listview = (ListView) main.getActivity().findViewById(R.id.PhoneVideoList);
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
int position = 0;
listview.performItemClick(listview.getChildAt(position), position, listview.getAdapter().getItemId(position));
Log.e("in on click", "on click");
}
});
Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(VideoPlay.class.getName(), null, false);
Activity itemDetailActivity = instrumentation.waitForMonitorWithTimeout(monitor, 5000);
/* TextView detailView = (TextView) itemDetailActivity.findViewById(R.id.item_detail);
assertThat(detailView.getText().toString(), is("Android"));*/
}
}
现在我想知道当我们点击列表项时如何移动到下一个activity
使用机器人:
1。在应用 gradle:
中添加以下依赖项
testCompile 'junit:junit:
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.jayway.android.robotium:robotium:5.4.+'
2。将点击侦听器添加到开始新的列表项 activity
3。添加以下测试
public class ListViewClickTest extends ActivityInstrumentationTestCase2<YourActivity> {
protected final CountDownLatch signal = new CountDownLatch (1);
protected Context context;
protected Activity activity;
protected Solo solo;
public ListViewClickTest () {
super (YourActivity.class);
}
@MediumTest
public void testListViewClick () {
waitForTime (4); //time to wait till your network request completes if data is being fetched from server, ignore otherwise
solo.clickInList (0); //position of list view item
waitForTime (50);
}
@Override
protected void setUp () throws Exception {
super.setUp ();
this.context = getInstrumentation ().getTargetContext ();
prepareTestData ();
activity = getActivity ();
solo = new Solo (getInstrumentation (), activity);
}
protected void waitForTime (long seconds) {
try {
signal.await (seconds, TimeUnit.SECONDS);
}
catch (InterruptedException e) {
e.printStackTrace ();
}
}
protected void prepareTestData () {
//Prepare test data if any
}
}
我写了一个用于执行列表视图测试的代码(即,我们可以检查项目在列表视图中的位置,当我们点击列表中的项目时显示 toast messame)。当我们单击 android 中的列表项时,我想移动到另一个 activity。
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> main = new ActivityTestRule<MainActivity>(MainActivity.class) {
@Override
protected void beforeActivityLaunched() {
Intents.init();
super.beforeActivityLaunched();
}
@Override
protected void afterActivityFinished() {
super.afterActivityFinished();
Intents.release();
}
};
}
这里我写了一个测试来计算列表中的项目数
@Test
public void testShouldLaunchTheMainActivityAndFindItemsInTheList() throws Exception {
ListView listview = (ListView) main.getActivity().findViewById(R.id.PhoneVideoList);
assertThat((int) listview.getCount(), is(61));
}
这里我写了一个测试来执行点击列表项
@Test
public void testShouldTestTheItemNameInTheList() throws Exception {
ListView listview = (ListView) main.getActivity().findViewById(R.id.PhoneVideoList);
listview.performItemClick(listview.getChildAt(1), 1, listview.getAdapter().getItemId(1));
listview.performItemClick(listview.getChildAt(4), 4, listview.getAdapter().getItemId(4));
listview.performItemClick(listview.getChildAt(10), 10, listview.getAdapter().getItemId(10));
}
@Test
public void testShouldShowTheItemDetailWhenAnItemIsClicked() {
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
final ListView listview = (ListView) main.getActivity().findViewById(R.id.PhoneVideoList);
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
int position = 0;
listview.performItemClick(listview.getChildAt(position), position, listview.getAdapter().getItemId(position));
Log.e("in on click", "on click");
}
});
Instrumentation.ActivityMonitor monitor = instrumentation.addMonitor(VideoPlay.class.getName(), null, false);
Activity itemDetailActivity = instrumentation.waitForMonitorWithTimeout(monitor, 5000);
/* TextView detailView = (TextView) itemDetailActivity.findViewById(R.id.item_detail);
assertThat(detailView.getText().toString(), is("Android"));*/
}
}
现在我想知道当我们点击列表项时如何移动到下一个activity
使用机器人:
1。在应用 gradle:
中添加以下依赖项testCompile 'junit:junit:
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.jayway.android.robotium:robotium:5.4.+'
2。将点击侦听器添加到开始新的列表项 activity 3。添加以下测试
public class ListViewClickTest extends ActivityInstrumentationTestCase2<YourActivity> {
protected final CountDownLatch signal = new CountDownLatch (1);
protected Context context;
protected Activity activity;
protected Solo solo;
public ListViewClickTest () {
super (YourActivity.class);
}
@MediumTest
public void testListViewClick () {
waitForTime (4); //time to wait till your network request completes if data is being fetched from server, ignore otherwise
solo.clickInList (0); //position of list view item
waitForTime (50);
}
@Override
protected void setUp () throws Exception {
super.setUp ();
this.context = getInstrumentation ().getTargetContext ();
prepareTestData ();
activity = getActivity ();
solo = new Solo (getInstrumentation (), activity);
}
protected void waitForTime (long seconds) {
try {
signal.await (seconds, TimeUnit.SECONDS);
}
catch (InterruptedException e) {
e.printStackTrace ();
}
}
protected void prepareTestData () {
//Prepare test data if any
}
}