在网络上找了半天,也没有找正确的Android的测试办法,最后还是自己琢磨出来的。以前就听我朋友说过,android毛病一堆,现在才体会到。Android SDK 和 iphone SDK 比,就不是一个档次的东西。网上总是有人说,Android还年轻,要体谅。我可不同意,要知道,android都已经出了好几个版本了,而现在最新的1.5版和iphone sdk的beta版都比不上。
先说说它的单元测试吧,基于1.5和eclipse。这里我说的是我的思路,有更加好的思路,欢迎指导。
我的方法:如果你要测试的不是Activity或者Service,就用AndroidTestCase;否则选择:ActivityUnitTestCase,ServiceTestCase。
在做单元测试以前,你需要创建一个新的项目,把要测试的项目包含到java build path中来。项目中的AndroidManifest.xml如下(这里假设你的your.test.package里面包含你的tests,your.work.package包含被测试的类):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.tests.package">
<application>
<uses-library android:name="android.test.runner" />
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="your.work.package"
android:label="Tests for Api Demos."/>
</manifest>
那么就可以做测试了,给出下面的实例;
1.用AndroidTestCase;
public class SdcardTest extends AndroidTestCase {
public void test1(){
// Log.v()
File f=new File("/sdcard");
String[] l=f.list();
this.assertTrue(f.exists());
this.assertTrue(f.isDirectory());
this.assertTrue(f.list().length>0);
}
}
2.用ActivityUnitTestCase
public class ForwardingTest extends ActivityUnitTestCase<Forwarding> {
private Intent mStartIntent;
private Button mButton;
public ForwardingTest() {
super(Forwarding.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
// In setUp, you can create any shared test data, or set up mock components to inject
// into your Activity. But do not call startActivity() until the actual test methods.
mStartIntent = new Intent(Intent.ACTION_MAIN);
}
/**
* The name 'test preconditions' is a convention to signal that if this
* test doesn't pass, the test case was not set up properly and it might
* explain any and all failures in other tests. This is not guaranteed
* to run before other tests, as junit uses reflection to find the tests.
*/
@MediumTest
public void testPreconditions() {
startActivity(mStartIntent, null, null);
mButton = (Button) getActivity().findViewById(R.id.go);
assertNotNull(getActivity());
assertNotNull(mButton);
}
/**
* This test demonstrates examining the way that activity calls startActivity() to launch
* other activities.
*/
@MediumTest
public void testSubLaunch() {
Forwarding activity = startActivity(mStartIntent, null, null);
mButton = (Button) activity.findViewById(R.id.go);
// This test confirms that when you click the button, the activity attempts to open
// another activity (by calling startActivity) and close itself (by calling finish()).
mButton.performClick();
assertNotNull(getStartedActivityIntent());
assertTrue(isFinishCalled());
}
/**
* This test demonstrates ways to exercise the Activity's life cycle.
*/
@MediumTest
public void testLifeCycleCreate() {
Forwarding activity = startActivity(mStartIntent, null, null);
// At this point, onCreate() has been called, but nothing else
// Complete the startup of the activity
getInstrumentation().callActivityOnStart(activity);
getInstrumentation().callActivityOnResume(activity);
// At this point you could test for various configuration aspects, or you could
// use a Mock Context to confirm that your activity has made certain calls to the system
// and set itself up properly.
getInstrumentation().callActivityOnPause(activity);
// At this point you could confirm that the activity has paused properly, as if it is
// no longer the topmost activity on screen.
getInstrumentation().callActivityOnStop(activity);
// At this point, you could confirm that the activity has shut itself down appropriately,
// or you could use a Mock Context to confirm that your activity has released any system
// resources it should no longer be holding.
// ActivityUnitTestCase.tearDown(), which is always automatically called, will take care
// of calling onDestroy().
}
}
分享到:
相关推荐
2. **Mockito**:在Android单元测试中,经常需要模拟(Mock)依赖项以隔离被测试的代码。Mockito是一个流行的Java库,允许我们创建和配置mock对象。例如,如果一个函数依赖于网络请求,我们可以用Mockito模拟网络...
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
首先,了解Android单元测试的基础至关重要。Android提供了JUnit框架,这是一个广泛用于Java的单元测试库,可以用于编写和运行测试用例。此外,Android Studio集成了TestNG,它提供了更多的功能和灵活性,如测试套件...
**Android单元测试Demo** 在Android应用开发中,单元测试是一种重要的质量保证手段,它能够帮助开发者验证代码的各个模块是否按预期工作。本Demo旨在提供一个基础的Android单元测试实践,通过实例化和运行测试用例...
Android单元测试通常是指在没有实际设备或模拟器的情况下,对应用程序的各个模块进行独立测试。由于Android的运行环境依赖于Dalvik或ART虚拟机,因此常规的Java单元测试框架(如JUnit)不能直接用于Android。为了...
在Android开发中,单元测试是确保代码质量、可维护性和减少bug的重要手段。它允许开发者在修改或添加功能时,对各个...结合Android测试支持库,我们可以有效地对Android应用进行单元测试,确保其在各种场景下的正确性。
上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇[ Android单元测试-作用以及简单示例](http://blog.csdn.net/double2hao/article/details/77159380)。 这篇文章主要介绍常见的...
下面将详细介绍Android单元测试的相关知识点,以及如何利用JUnit进行测试。 首先,我们需要了解单元测试的基本概念。单元测试是对软件中的最小可测试单元进行检查和验证,如函数、方法或类。它的目标是确保代码的每...
### Android单元测试框架搭建手册 #### 一、前言 随着移动互联网的快速发展,Android应用的质量成为了用户体验的关键因素之一。为了提高应用的质量,确保代码的可靠性和稳定性,单元测试成为了必不可少的一部分。...
在这个"android单元测试实例二"中,我们将探讨如何对一个简单的加法函数进行单元测试,以及如何在同一个项目中组织测试代码。 首先,我们要理解单元测试的基本概念。单元测试是对软件中的最小可测试单元进行检查和...
通过这个实例,你可以深入理解Android单元测试的工作原理,学会如何编写和执行测试用例,以及如何利用工具和框架优化测试流程。记住,良好的测试实践不仅能提升代码质量,还能降低维护成本,提高开发效率。
一、Android单元测试基础 单元测试是针对软件中的最小可测试单元进行验证,对于Android应用来说,这通常是指单个的Java或Kotlin类、方法或函数。通过单元测试,开发者可以在不依赖实际设备或模拟器的情况下,独立地...
本文将详细介绍如何在Android Studio中进行单元测试,包括Java单元测试和App程序单元测试。 首先,Android Studio支持两种类型的单元测试:Java单元测试和Android应用单元测试。Java单元测试适用于纯Java代码,而...
通过以上分析,我们可以看出“android单元测试”是一个涵盖多种技术和实践的广泛话题,包括但不限于JUnit、AndroidJUnitRunner、Mockito、Robolectric等工具的使用,以及编写高效、全面的测试用例的技巧。...
Android单元测试(一):JUnit框架的使用 Android单元测试(二):Mockito框架的使用 Android单元测试(三):PowerMock框架的使用 Android单元测试(四):Robolectric框架的使用 Android单元测试(五):网络接口...
在Android应用开发中,单元测试是一项至关重要的任务,它能够确保代码的质量,提高软件的可靠性,并简化维护工作。本文将深入探讨如何利用Junit、Mockito以及Robolectric这三个强大的工具,来实现对MVP(Model-View-...
参考官方客户端『掘金』,本项目仅仅用户学习目的,在Android Studio下使用单元测试,以及使用开源库Rxjava + Retrofit 等进行快速开发 单元测试 junit4 使用到最多,配合retrofit和rajava进行restapi请求测试 mockito ...
使用JUnit进行Android单元测试时,需要注意,因为Android SDK提供的JUnit版本可能不包含完整的实现,所以可能需要在运行配置中指定JRE,并添加JUnit库。如果在Eclipse中,可以通过`Run Configurations`来调整`...