您的位置:首页 > 移动开发 > Android开发

Android单元测试

2010-05-28 23:34 330 查看
如果你要测试的是Activity或者Service,就用ActivityUnitTestCase,ServiceTestCase。否则选择:AndroidTestCase。

在做Android单元测试以前,你需要创建一个新的项目,把要测试的项目包含到java build path中来。项目中的AndroidManifest.xml如下(这里假设你的your.test.package里面包含你的tests,your.work.package包含被测试的类):

Xml代码:

< ?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>

< ?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;

Java代码

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);
}
}
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

Java代码

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().
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: