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()));
}
}
分享到:
相关推荐
`AndroidTestCase`是Google为Android应用程序提供的一个测试框架,它允许开发者对Android组件,如Activity、Service、ContentProvider等进行单元测试。`JUnit`则是Java领域广泛使用的单元测试框架,它为编写可重复的...
"androidtestcase"是一个专门针对Android应用的测试用例集合,旨在帮助开发者进行有效的功能验证和错误排查。在这个小例子程序中,我们可以学习到如何构建和执行Android的单元测试以及UI测试。 首先,Android测试...
通过上述例子可以看出,利用`AndroidTestCase`进行单元测试可以帮助我们更高效地验证代码逻辑的正确性,从而提升应用程序的整体质量。在实际开发过程中,建议开发者根据项目特点制定合理的测试策略,充分利用各种...
AndroidTestCase是Android提供的一个基础测试框架,用于编写针对Android应用的单元测试。以下将详细介绍如何在Android中使用AndroidTestCase进行测试,并提供相关的代码实例。 1. **创建测试类** 创建一个类来继承...
单元测试可以帮助开发者快速地检测应用中的错误和问题,从而提高应用的质量和 stability。Android JUnit 是一个基于 JUnit 框架的单元测试框架,专门为 Android 应用设计。通过使用 Android JUnit,可以轻松地编写和...
Android平台上的测试和Instrumentation是开发者确保应用质量的关键工具。Android测试环境建立在JUnit测试框架之上,为Android应用提供了一套全面的测试解决方案。本文主要介绍了Android测试环境的核心——...
在Android应用开发中,测试是不可或缺的一环,它确保了代码的质量和稳定性。...通过这个项目,开发者可以深入了解如何利用`AndroidTestCase`进行有效的单元测试和集成测试,从而提高代码质量和应用的稳定性。
Android测试框架是Android开发不可或缺的一部分,它允许开发者对应用程序进行全面的测试,确保代码的质量和功能的正确性。本文主要介绍了Android测试框架的一些关键特性和结构。 首先,Android测试框架基于JUnit 3...
2. `AndroidTestCase`:这个类扩展了`TestCase`,并提供了对Android特定环境的支持,如访问资源、文件和数据库。它的子类如`ApplicationTestCase`,专门用于测试整个应用程序,可以通过模拟的Context来初始化和清理...
AndroidTestCase提供了访问Android系统服务和组件的能力,例如Context和ActivityManager,使得你可以测试应用程序在真实环境中如何工作。 AndroidJUnitRunner是Android测试框架的核心部分,它是JUnit测试运行器的...
【Android核心基础】是安卓开发入门的重要组成部分,涵盖了Android应用开发的基本概念和技术。在这个主题中,我们将重点关注Android Junit测试框架的使用,它是确保代码质量和稳定性的重要工具。 **1. 测试分类** ...
Android平台上的软件开发与测试是一项复杂而精细的工作,为了确保应用程序的质量与稳定性,开发者需要掌握多种测试方法和技术。本章节将详细介绍Android测试的基础知识,包括不同类型的测试以及如何利用JUnit进行...
测试代码通常放在单独的`test`包中,继承自`AndroidTestCase`。 在Android Studio中,可以方便地创建和运行单元测试。例如,为一个名为`add`的方法编写测试用例,只需右键点击方法并选择`Run as Android Junit Test...
这些源码可能包含InstrumentationTestRunner和AndroidTestCase的使用示例,用于测试应用程序的各个方面。 4. **Mockito和Robolectric** Mockito是一个流行的Java和Kotlin单元测试框架,用于创建和管理测试中的依赖...
要在安卓应用中使用JUnit,首先创建一个继承自AndroidTestCase的测试类。然后,在清单文件中配置和标签,指定测试运行器为android.test.InstrumentationTestRunner,并设定目标包名为待测试的应用包名。这样,我们就...
针对移动应用,特别是手机UI界面的测试,能够确保用户界面的功能正确性、响应速度以及用户体验。本文将深入探讨如何进行“单元测试手机UI界面”,主要围绕AndroidTestRunner类的使用进行阐述。 首先,我们需要了解...
使用不同的模块,我们可以使用不同的测试套件(用于纯Java代码的JUnit,用于Android代码的AndroidTestCase) 模块API src |- main |- |- test: contains all unit tests for this module |- java: code for Unit...
2. 在测试工程中,你需要创建一个继承自`android.test.AndroidTestCase`的测试类。这个类将包含你的测试方法,每个方法对应一个特定的测试场景。 3. 使用`@Test`注解标记测试方法。这些方法应该调用待测试应用的公共...