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()));
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值