当前位置: 代码迷 >> Android >> AndroidTestCase Solo 运用
  详细解决方案

AndroidTestCase Solo 运用

热度:463   发布时间:2016-05-01 16:33:00.0
AndroidTestCase Solo 应用
TestCase在项目中是很重要,但仍然有很多人不知道怎么去写,今天我将我写的一段Case给大家分享一下。正常我们都会继承AndroidTestCase,我这里继承的ApplicationTestCase. 方法命名最好Test什么方法就在该方法前test
public class InteractiveIssueDataHandlerTest extends ApplicationTestCase<App> {	public InteractiveIssueDataHandlerTest() {		super(App.class);	}//add some parameter if you need.	@Override	protected void setUp() throws Exception {		super.setUp();		createApplication();		SharedPreferences prefs = this.getContext().getSharedPreferences("settings",				Context.MODE_PRIVATE);		String sInstallationUuid = prefs.getString("installationUuid", null);		if (sInstallationUuid == null) {			sInstallationUuid = UUID.randomUUID().toString();			Editor editor = prefs.edit();			editor.putString("installationUuid", sInstallationUuid);			editor.commit();		}	}/**	 * Tests the parsing of the issue data xml response.	 * @throws ServiceException	 */	public void testSingleIssue() throws ServiceException {		IssueData issueData = getIssueData();				assertEquals(packageSize, issueData.getPackageSize());		assertTrue(issueData.isAutoStart());assertNotNull(issueData.getHostName());			}/**	 * return IssueData for other method	 */	 IssueData getIssueData(){				IssueDataHandler handler = new IssueDataHandler();		handleXmlFilePath(handler, ISSUE_DATA_XML_PATH, false);		IssueData issueData = handler.getIssueData(); 		System.out.println("----issueData--" + issueData);		return issueData;	}

Solo 我用的不多,但是确很方便,给大家一部分代码供参考
/** * A class to test the MoreActivity class. *  * @author Georgi *  */public class MoreActivityTest extends ZinioActivityTransitionTest<MoreActivity> {	private Solo solo;	private MoreActivity mMoreActivity;	private TextView mLegalNotices;	private TextView mSignOut;	private TextView mManageTips;	private Instrumentation mInstrumentation;	/*	 * Constructor	 */	public MoreActivityTest() {		super(MoreActivity.class);	}	@Override	public void setUp() throws Exception {		super.setUp();		try {						UserManager.get().logInSync(new Handler(), 					TestUtil.getExistingUserId(), TestUtil.getExistingUserPassword());					} catch (Exception e) {			fail();		}				solo = new Solo(getInstrumentation(), getActivity());		mMoreActivity = this.getActivity();		mLegalNotices = (TextView) this.getActivity().findViewById(R.id.more_legal_notices);		mSignOut = (TextView) this.getActivity().findViewById(R.id.more_sign_out);		mManageTips = (TextView) this.getActivity().findViewById(R.id.more_manage_tips);		mInstrumentation = getInstrumentation();	}	@Override	public void tearDown() throws Exception {		super.tearDown();	}	/**	 * Tests whether the 6 exact TextViews on that page are drawn when opening	 * this Activity	 */	public void testMenuMembersInitialization() {				ModuleRegistry.get();				int[] pageTextViewsIds = new int[] { 				R.id.more_change_password,				R.id.more_faq,				R.id.more_legal_notices,				R.id.more_manage_tips,				R.id.more_sign_out		};		List<TextView> textViewsOnPage = findAllViews(pageTextViewsIds, TextView.class);		TextView v = (TextView) mMoreActivity.findViewById(R.id.more_change_password);				ViewGroup vp = (ViewGroup) v.getParent();		List<TextView> viewsList = new ArrayList<TextView>();				for (int i = 0; i < vp.getChildCount(); i++) {						if (vp.getChildAt(i).getClass() == TextView.class) {				viewsList.add((TextView) vp.getChildAt(i));				Log.i("added", Integer.toString(i));			}		}		if (!viewsList.containsAll(textViewsOnPage)) {			fail("One or more of the main view components are not initialized");		}	}	/**	 * Tests whether the More Activity is initialized	 */	public void testActivityElementsExistence() {				assertNotNull(mMoreActivity);		assertNotNull(mLegalNotices);		assertNotNull(mSignOut);		assertNotNull(mManageTips);		assertNotNull(mInstrumentation);	}	/**	 * This tests clicks on 'managed tips' and then clicks on back button	 */	public void testManageTips() {				solo.clickOnText(mMoreActivity.getString(R.string.manage_tips));		assertTrue(solo.searchText(mMoreActivity.getString(R.string.dialog_manage_tips_title)));		solo.clickOnText(mMoreActivity.getString(R.string.cancel));	}	/**	 * This tests clicks on 'managed tips' and then clicks on back button	 */	public void testSignOutCancel() {			solo.clickOnText(mMoreActivity.getString(R.string.sign_out));		assertTrue(solo.searchText(mMoreActivity.getString(R.string.dialog_sign_out_title)));		solo.clickOnText(mMoreActivity.getString(R.string.cancel));	}	/**	 * Test whether the "change password" link starts the proper Activity	 */	public void testChangePasswordIntent() {	    		solo.clickOnText(mMoreActivity.getString(R.string.change_password));		solo.sleep(10000);		solo.assertCurrentActivity("Expected ChangePasswordActivity", ChangePasswordActivity.class);	}	/**	 * Test whether the version code is drawn and displayed and is not null	 */	public void testVersionCodeDisplayTest() {				TextView v = findView(R.id.more_vc, TextView.class);		assertTrue(v != null);		String vcText = v.getText().toString();		assertTrue(vcText.contains(UserManager.get().getCurrentUser().getUsername()));	}}
1 楼 haojunming11 2011-11-10  
问一下 ZinioActivityTransitionTest这个类是什么类,我在android环境中怎么写这个类就报错?能不能把这个类的代码贴一下,谢谢啊