`
SylarLou
  • 浏览: 7838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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环境中怎么写这个类就报错?能不能把这个类的代码贴一下,谢谢啊

相关推荐

    Android review AndroidTestCase

    `AndroidTestCase`是Google为Android应用程序提供的一个测试框架,它允许开发者对Android组件,如Activity、Service、ContentProvider等进行单元测试。`JUnit`则是Java领域广泛使用的单元测试框架,它为编写可重复的...

    androidtestcase

    "androidtestcase"是一个专门针对Android应用的测试用例集合,旨在帮助开发者进行有效的功能验证和错误排查。在这个小例子程序中,我们可以学习到如何构建和执行Android的单元测试以及UI测试。 首先,Android测试...

    Android[中级教程]第四章_单元测试AndroidTestCase.doc

    通过上述例子可以看出,利用`AndroidTestCase`进行单元测试可以帮助我们更高效地验证代码逻辑的正确性,从而提升应用程序的整体质量。在实际开发过程中,建议开发者根据项目特点制定合理的测试策略,充分利用各种...

    Android中使用AndroidTestCase的方法实例

    AndroidTestCase是Android提供的一个基础测试框架,用于编写针对Android应用的单元测试。以下将详细介绍如何在Android中使用AndroidTestCase进行测试,并提供相关的代码实例。 1. **创建测试类** 创建一个类来继承...

    android Junit单元测试

    单元测试可以帮助开发者快速地检测应用中的错误和问题,从而提高应用的质量和 stability。Android JUnit 是一个基于 JUnit 框架的单元测试框架,专门为 Android 应用设计。通过使用 Android JUnit,可以轻松地编写和...

    主动发送事件android.pdf

    Android平台上的测试和Instrumentation是开发者确保应用质量的关键工具。Android测试环境建立在JUnit测试框架之上,为Android应用提供了一套全面的测试解决方案。本文主要介绍了Android测试环境的核心——...

    AndroidTestCaseExample

    在Android应用开发中,测试是不可或缺的一环,它确保了代码的质量和稳定性。...通过这个项目,开发者可以深入了解如何利用`AndroidTestCase`进行有效的单元测试和集成测试,从而提高代码质量和应用的稳定性。

    Android测试框架介绍.doc

    Android测试框架是Android开发不可或缺的一部分,它允许开发者对应用程序进行全面的测试,确保代码的质量和功能的正确性。本文主要介绍了Android测试框架的一些关键特性和结构。 首先,Android测试框架基于JUnit 3...

    Android自动化测试之Instrument深入研究.pdf

    2. `AndroidTestCase`:这个类扩展了`TestCase`,并提供了对Android特定环境的支持,如访问资源、文件和数据库。它的子类如`ApplicationTestCase`,专门用于测试整个应用程序,可以通过模拟的Context来初始化和清理...

    android中文SDK 测试基本原理.doc

    AndroidTestCase提供了访问Android系统服务和组件的能力,例如Context和ActivityManager,使得你可以测试应用程序在真实环境中如何工作。 AndroidJUnitRunner是Android测试框架的核心部分,它是JUnit测试运行器的...

    安卓基础资料连载二

    【Android核心基础】是安卓开发入门的重要组成部分,涵盖了Android应用开发的基本概念和技术。在这个主题中,我们将重点关注Android Junit测试框架的使用,它是确保代码质量和稳定性的重要工具。 **1. 测试分类** ...

    Android测试,日志

    Android平台上的软件开发与测试是一项复杂而精细的工作,为了确保应用程序的质量与稳定性,开发者需要掌握多种测试方法和技术。本章节将详细介绍Android测试的基础知识,包括不同类型的测试以及如何利用JUnit进行...

    数据存储——存储文件权限

    测试代码通常放在单独的`test`包中,继承自`AndroidTestCase`。 在Android Studio中,可以方便地创建和运行单元测试。例如,为一个名为`add`的方法编写测试用例,只需右键点击方法并选择`Run as Android Junit Test...

    Android+application+testing+guide 英文版配套源码

    这些源码可能包含InstrumentationTestRunner和AndroidTestCase的使用示例,用于测试应用程序的各个方面。 4. **Mockito和Robolectric** Mockito是一个流行的Java和Kotlin单元测试框架,用于创建和管理测试中的依赖...

    安卓学习笔记

    要在安卓应用中使用JUnit,首先创建一个继承自AndroidTestCase的测试类。然后,在清单文件中配置和标签,指定测试运行器为android.test.InstrumentationTestRunner,并设定目标包名为待测试的应用包名。这样,我们就...

    单元测试手机UI界面

    针对移动应用,特别是手机UI界面的测试,能够确保用户界面的功能正确性、响应速度以及用户体验。本文将深入探讨如何进行“单元测试手机UI界面”,主要围绕AndroidTestRunner类的使用进行阐述。 首先,我们需要了解...

    AndroidAdvancedPractice

    使用不同的模块,我们可以使用不同的测试套件(用于纯Java代码的JUnit,用于Android代码的AndroidTestCase) 模块API src |- main |- |- test: contains all unit tests for this module |- java: code for Unit...

    android test

    2. 在测试工程中,你需要创建一个继承自`android.test.AndroidTestCase`的测试类。这个类将包含你的测试方法,每个方法对应一个特定的测试场景。 3. 使用`@Test`注解标记测试方法。这些方法应该调用待测试应用的公共...

Global site tag (gtag.js) - Google Analytics