Change the code to check whether it is necessary to create a track for each test, and make the test run faster.

This commit is contained in:
youtaol
2012-05-11 16:28:21 +08:00
parent 5f017ab96c
commit f1573a550a
9 changed files with 171 additions and 74 deletions
@@ -53,8 +53,10 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
* Creates a track with markers and the setting to send to google.
*/
public void testCreateAndSendTrack() {
// Create a track at first.
EndToEndTestUtils.createSimpleTrack(1);
if (EndToEndTestUtils.isTrackListEmpty(true)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(1);
}
instrumentation.waitForIdleSync();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_send_google), true,
false);
@@ -90,7 +92,10 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
* Tests editing a track.
*/
public void testEditTrack() {
EndToEndTestUtils.createSimpleTrack(0);
if (EndToEndTestUtils.isTrackListEmpty(true)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(0);
}
instrumentation.waitForIdleSync();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_edit), true, false);
@@ -111,7 +116,7 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
instrumentation.waitForIdleSync();
// Go back to track list.
EndToEndTestUtils.SOLO.goBack();
instrumentation.waitForIdleSync();
assertTrue(EndToEndTestUtils.SOLO.searchText(newTrackName));
assertTrue(EndToEndTestUtils.SOLO.searchText(newDesc));
}
@@ -149,8 +154,7 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
* Creates a way point and a statistics during track recording.
*/
private void createWaypointAndStatistics() {
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_markers), true,
true);
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_markers), true, true);
instrumentation.waitForIdleSync();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_insert_marker), true,
true);
@@ -162,7 +166,6 @@ public class CreateAndSendTrackTest extends ActivityInstrumentationTestCase2<Tra
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_add));
assertTrue(EndToEndTestUtils.SOLO.searchText(WAYPOINT_NAME));
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_insert_marker), true,
true);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.marker_statistics));
@@ -50,8 +50,11 @@ public class DeleteTest extends ActivityInstrumentationTestCase2<TrackListActivi
* Deletes all tracks.
*/
public void testDeleteAllTracks() {
EndToEndTestUtils.createSimpleTrack(0);
EndToEndTestUtils.SOLO.goBack();
if (EndToEndTestUtils.isTrackListEmpty(false)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(0);
EndToEndTestUtils.SOLO.goBack();
}
instrumentation.waitForIdleSync();
// There is at least one track.
ArrayList<ListView> trackListView = EndToEndTestUtils.SOLO.getCurrentListViews();
@@ -73,8 +76,11 @@ public class DeleteTest extends ActivityInstrumentationTestCase2<TrackListActivi
* Deletes only one track.
*/
public void testDeleteSingleTrack() {
EndToEndTestUtils.createSimpleTrack(0);
EndToEndTestUtils.SOLO.goBack();
if (EndToEndTestUtils.isTrackListEmpty(false)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(0);
EndToEndTestUtils.SOLO.goBack();
}
instrumentation.waitForIdleSync();
// Get the number of track( or tracks)
ArrayList<ListView> trackListView = EndToEndTestUtils.SOLO.getCurrentListViews();
@@ -24,7 +24,9 @@ import android.app.Activity;
import android.app.Instrumentation;
import android.content.res.Configuration;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.File;
import java.io.FileFilter;
@@ -124,12 +126,37 @@ public class EndToEndTestUtils {
if ((EndToEndTestUtils.getButtonOnScreen(EndToEndTestUtils.ACTIVITYMYTRACKS
.getString(R.string.eula_accept)) != null)) {
EndToEndTestUtils.verifyFirstLaunch();
} else if (EndToEndTestUtils.SOLO.waitForText(
// After reset setting, welcome page will show again.
ACTIVITYMYTRACKS.getString(R.string.welcome_title), 0, 500)) {
resetPreferredUnits();
}
EndToEndTestUtils.CHECKED_FIRSTLAUNCH = true;
EndToEndTestUtils.setHasActionBar();
} else if (EndToEndTestUtils.SOLO.waitForText(
// After reset setting, welcome page will show again.
ACTIVITYMYTRACKS.getString(R.string.welcome_title), 0, 500)) {
resetPreferredUnits();
}
// Check whether is under recording. If previous test failed, the recording
// may not be recording.
if (isUnderRecording()) {
stopRecording(true);
}
}
/**
* Checks if need reset preferred units.
*/
public static void resetPreferredUnits() {
EndToEndTestUtils.SOLO.clickOnText(ACTIVITYMYTRACKS.getString(R.string.generic_ok));
SOLO.waitForText(ACTIVITYMYTRACKS.getString(R.string.settings_stats_units_title));
EndToEndTestUtils.SOLO.clickOnText(ACTIVITYMYTRACKS.getString(R.string.generic_ok));
INSTRUMENTATION.waitForIdleSync();
}
/**
* Rotates the given activity.
@@ -162,8 +189,30 @@ public class EndToEndTestUtils {
static void createSimpleTrack(int numberOfGpsData) {
startRecording();
EndToEndTestUtils.sendGps(numberOfGpsData);
INSTRUMENTATION.waitForIdleSync();
stopRecording(true);
}
/**
* Checks if there is no track in track list. For some tests need at least one
* track, the method can save time to create a new track.
*
* @param isClick if not empty, true means click any track
* @return return true if the track list is empty
*/
static boolean isTrackListEmpty(boolean isClick) {
int trackNumber = SOLO.getCurrentListViews().get(0).getCount();
if(trackNumber <= 0) {
return true;
} else {
View oneTrack = SOLO.getCurrentListViews().get(0).getChildAt(0);
TRACK_NAME = (String) ((TextView) oneTrack.findViewById(R.id.list_item_name)).getText();
if (isClick) {
SOLO.clickOnView(oneTrack);
}
return false;
}
}
/**
* Starts recoding track.
@@ -193,6 +242,32 @@ public class EndToEndTestUtils {
SOLO.clickOnText(ACTIVITYMYTRACKS.getString(R.string.menu_record_track));
}
}
/**
* Checks if the MyTracks is under recording.
*
* @return true if it is under recording.
*/
static boolean isUnderRecording() {
if (HAS_ACTIONBAR) {
Button startButton = getButtonOnScreen(ACTIVITYMYTRACKS.getString(R.string.menu_record_track));
// In case a track is recording.
if (startButton == null) {
return true;
}
} else {
SOLO.sendKey(KeyEvent.KEYCODE_MENU);
if (!SOLO.searchText(ACTIVITYMYTRACKS.getString(R.string.menu_record_track))) {
// Check if in TrackDetailActivity.
if (SOLO.searchText(ACTIVITYMYTRACKS.getString(R.string.menu_play))) {
SOLO.goBack();
} else {
return true;
}
}
}
return false;
}
/**
* Stops recoding track.
@@ -200,7 +275,6 @@ public class EndToEndTestUtils {
* @param isSave ture means should save this track
*/
static void stopRecording(boolean isSave) {
INSTRUMENTATION.waitForIdleSync();
if (HAS_ACTIONBAR) {
SOLO.clickOnView(getButtonOnScreen(ACTIVITYMYTRACKS.getString(R.string.menu_stop_recording)));
} else {
@@ -288,6 +362,7 @@ public class EndToEndTestUtils {
* @return false means can not check failed.
*/
static boolean setHasActionBar() {
INSTRUMENTATION.waitForIdleSync();
// If can find record button without pressing Menu, it should be an action
// bar.
Button startButton = getButtonOnScreen(ACTIVITYMYTRACKS.getString(R.string.menu_record_track));
@@ -58,8 +58,11 @@ public class ExportAndImportTest extends ActivityInstrumentationTestCase2<TrackL
*/
public void testExportAndImportTracks() {
// Create a new track with 3 gps data.
EndToEndTestUtils.createSimpleTrack(3);
EndToEndTestUtils.SOLO.goBack();
if (EndToEndTestUtils.isTrackListEmpty(false)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(3);
EndToEndTestUtils.SOLO.goBack();
}
instrumentation.waitForIdleSync();
// Create a empty track.
EndToEndTestUtils.createSimpleTrack(0);
@@ -79,20 +82,18 @@ public class ExportAndImportTest extends ActivityInstrumentationTestCase2<TrackL
int trackNumber = EndToEndTestUtils.SOLO.getCurrentListViews().get(0).getCount();
// No file to imported.
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_save_all), true,
false);
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_import), true, false);
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.import_no_file,
FileUtils.buildExternalDirectoryPath(EndToEndTestUtils.GPX)));
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok));
// Click to export tracks(At least one track) to Gpx files.
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_save_all), true,
false);
EndToEndTestUtils.SOLO.clickOnText(String.format(
activityMyTracks.getString(R.string.menu_save_format),
EndToEndTestUtils.GPX.toUpperCase()));
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_save_all), true, false);
EndToEndTestUtils.SOLO
.clickOnText(String.format(activityMyTracks.getString(R.string.menu_save_format),
EndToEndTestUtils.GPX.toUpperCase()));
EndToEndTestUtils.rotateAllActivities();
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.export_success));
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.save_all_success));
// Check export file.
assertEquals(gpxFilesNumber + trackNumber,
EndToEndTestUtils.getExportedFiles(EndToEndTestUtils.GPX).length);
@@ -102,8 +103,7 @@ public class ExportAndImportTest extends ActivityInstrumentationTestCase2<TrackL
gpxFilesNumber = EndToEndTestUtils.getExportedFiles(EndToEndTestUtils.GPX).length;
trackNumber = EndToEndTestUtils.SOLO.getCurrentListViews().get(0).getCount();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_import), true,
false);
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_import), true, false);
EndToEndTestUtils.rotateAllActivities();
// Wait for the prefix of import success string is much faster than wait
// the whole string.
@@ -119,12 +119,11 @@ public class ExportAndImportTest extends ActivityInstrumentationTestCase2<TrackL
// Click to export tracks(At least two tracks) to KML files.
gpxFilesNumber = EndToEndTestUtils.getExportedFiles(EndToEndTestUtils.GPX).length;
trackNumber = EndToEndTestUtils.SOLO.getCurrentListViews().get(0).getCount();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_save_all), true,
false);
EndToEndTestUtils.SOLO.clickOnText(String.format(
activityMyTracks.getString(R.string.menu_save_format),
EndToEndTestUtils.KML.toUpperCase()));
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.export_success));
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_save_all), true, false);
EndToEndTestUtils.SOLO
.clickOnText(String.format(activityMyTracks.getString(R.string.menu_save_format),
EndToEndTestUtils.KML.toUpperCase()));
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.save_all_success));
// Check export files.
assertEquals(gpxFilesNumber, EndToEndTestUtils.getExportedFiles(EndToEndTestUtils.GPX).length);
assertEquals(trackNumber, EndToEndTestUtils.getExportedFiles(EndToEndTestUtils.KML).length);
@@ -47,9 +47,11 @@ public class GoToMyLocationTest extends ActivityInstrumentationTestCase2<TrackLi
* Tests the menu My Location.
*/
public void testGotoMyLocation() {
EndToEndTestUtils.createSimpleTrack(0);
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.my_location), true,
false);
if (EndToEndTestUtils.isTrackListEmpty(true)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(2);
}
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.my_location), true, false);
// TODO How to verify the location is shown on the map.
}
@@ -57,8 +57,10 @@ public class MenuItemsTest extends ActivityInstrumentationTestCase2<TrackListAct
true, false);
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.stats_total_distance));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.startRecording();
instrumentation.waitForIdleSync();
if(EndToEndTestUtils.isTrackListEmpty(true)) {
EndToEndTestUtils.createSimpleTrack(1);
}
instrumentation.waitForIdleSync();
// Menu in TrackDetailActivity.
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_sensor_state), true,
@@ -71,8 +73,6 @@ public class MenuItemsTest extends ActivityInstrumentationTestCase2<TrackListAct
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.help_about));
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.generic_ok));
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.generic_ok));
EndToEndTestUtils.stopRecording(true);
}
@Override
@@ -29,7 +29,6 @@ public class SaveToSdCardTest extends ActivityInstrumentationTestCase2<TrackList
private Instrumentation instrumentation;
private TrackListActivity activityMyTracks;
private static boolean isCreateTrack = true;
public SaveToSdCardTest() {
super(TrackListActivity.class);
@@ -41,12 +40,9 @@ public class SaveToSdCardTest extends ActivityInstrumentationTestCase2<TrackList
instrumentation = getInstrumentation();
activityMyTracks = getActivity();
EndToEndTestUtils.setupForAllTest(instrumentation, activityMyTracks);
if (isCreateTrack) {
EndToEndTestUtils.createSimpleTrack(0);
// Only create one track for this test.
isCreateTrack = false;
} else {
EndToEndTestUtils.SOLO.clickOnText(EndToEndTestUtils.TRACK_NAME);
if (EndToEndTestUtils.isTrackListEmpty(true)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(1);
}
}
@@ -66,14 +66,12 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
// Reset all settings at first.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_reset));
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok));
// Change a setting of display.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_display));
EndToEndTestUtils.SOLO
.waitForText(activityMyTracks.getString(R.string.settings_display_metric));
// Change a setting of Map.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
// Rotate on a sub setting page.
EndToEndTestUtils.rotateAllActivities();
EndToEndTestUtils.SOLO
.waitForText(activityMyTracks.getString(R.string.settings_display_metric));
EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.settings_stats_units_title));
ArrayList<CheckBox> displayCheckBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes();
boolean useMetric = displayCheckBoxs.get(0).isChecked();
EndToEndTestUtils.SOLO.clickOnCheckBox(0);
@@ -98,9 +96,9 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok));
// Check settings.
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.settings_display));
EndToEndTestUtils.SOLO
.waitForText(activityMyTracks.getString(R.string.settings_display_metric));
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
EndToEndTestUtils.SOLO.waitForText(activityMyTracks
.getString(R.string.settings_stats_units_title));
displayCheckBoxs = EndToEndTestUtils.SOLO.getCurrentCheckBoxes();
assertEquals(useMetric, displayCheckBoxs.get(0).isChecked());
@@ -118,9 +116,12 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
public void testBackup() {
// Delete all backup at first.
EndToEndTestUtils.deleteExportedFiles(EndToEndTestUtils.BACKUPS);
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(3);
EndToEndTestUtils.SOLO.goBack();
if (EndToEndTestUtils.isTrackListEmpty(false)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(3);
EndToEndTestUtils.SOLO.goBack();
}
assertTrue(EndToEndTestUtils.SOLO.searchText(EndToEndTestUtils.TRACK_NAME));
// Write to SD card.
@@ -173,7 +174,9 @@ public class SettingTest extends ActivityInstrumentationTestCase2<TrackListActiv
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.startRecording();
instrumentation.waitForIdleSync();
EndToEndTestUtils.stopRecording(false);
instrumentation.waitForIdleSync();
assertTrue(EndToEndTestUtils.SOLO.searchText(activityMyTracks.getString(
R.string.track_name_format).split(" ")[0]));
assertTrue(EndToEndTestUtils.SOLO.searchText(DEFAULTACTIVITY));
@@ -22,6 +22,7 @@ import com.google.android.maps.mytracks.R;
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
import android.view.KeyEvent;
import android.view.View;
import java.util.ArrayList;
@@ -54,41 +55,54 @@ public class ViewsTest extends ActivityInstrumentationTestCase2<TrackListActivit
* menus in these views.
*/
public void testSwitchViewsAndMenusOfView() {
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_delete_all), true,
false);
EndToEndTestUtils.SOLO.clickOnButton(activityMyTracks.getString(R.string.generic_ok));
instrumentation.waitForIdleSync();
EndToEndTestUtils.createSimpleTrack(3);
if (EndToEndTestUtils.isTrackListEmpty(true)) {
// Create a simple track.
EndToEndTestUtils.createSimpleTrack(3);
}
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.clickOnText(EndToEndTestUtils.TRACK_NAME);
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_chart_tab));
EndToEndTestUtils.rotateAllActivities();
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_chart_settings), true,
false);
assertTrue(EndToEndTestUtils.SOLO.searchText(activityMyTracks
.getString(R.string.chart_settings_by_distance)));
EndToEndTestUtils.SOLO.sendKey(KeyEvent.KEYCODE_MENU);
assertTrue(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_settings), 1, 3000));
assertFalse(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_satellite_mode), 1, 0));
assertFalse(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_map_mode), 1, 0));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_stats_tab));
EndToEndTestUtils.findMenuItem(activityMyTracks.getString(R.string.menu_sensor_state), true,
false);
assertTrue(EndToEndTestUtils.SOLO.searchText(activityMyTracks
.getString(R.string.sensor_state_last_sensor_time)));
EndToEndTestUtils.SOLO.sendKey(KeyEvent.KEYCODE_MENU);
assertTrue(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_settings), 1, 3000));
assertFalse(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_satellite_mode), 1, 0));
assertFalse(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_map_mode), 1, 0));
EndToEndTestUtils.SOLO.goBack();
EndToEndTestUtils.SOLO.clickOnText(activityMyTracks.getString(R.string.track_detail_map_tab));
assertTrue(EndToEndTestUtils.findMenuItem(
activityMyTracks.getString(R.string.my_location), false, false));
EndToEndTestUtils.SOLO.sendKey(KeyEvent.KEYCODE_MENU);
assertTrue(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_settings), 1, 3000));
assertTrue(EndToEndTestUtils.SOLO.waitForText(
activityMyTracks.getString(R.string.menu_satellite_mode), 1, 0)
|| EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.menu_map_mode),
1, 0));
}
/**
* Tests the switch between satellite mode and map mode.
*/
public void testSatelliteAndMapView() {
EndToEndTestUtils.startRecording();
instrumentation.waitForIdleSync();
if(EndToEndTestUtils.isTrackListEmpty(true)) {
EndToEndTestUtils.createSimpleTrack(1);
}
instrumentation.waitForIdleSync();
// Check current mode.
boolean isMapMode = true;
@@ -130,7 +144,6 @@ public class ViewsTest extends ActivityInstrumentationTestCase2<TrackListActivit
// found in next step.
EndToEndTestUtils.SOLO.waitForText(activityMyTracks.getString(R.string.track_detail_chart_tab),
0, 1000);
EndToEndTestUtils.stopRecording(true);
}
@Override