浏览 6849 次
锁定老帖子 主题:Android下的单元测试
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-21
先说说它的单元测试吧,基于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(). } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-08-24
ut,很有用,一直想弄,但没整出来,
email程序的测试一直没跑起来 |
|
返回顶楼 | |
发表时间:2009-08-24
unit test 是一个让人头疼的问题 尤其这样内嵌式一样的东西 哎
|
|
返回顶楼 | |
发表时间:2009-08-24
学习一下,虽然不是很热衷于单元测试.
顺便提一下,你如果用android这个自带工具生成项目的话,是会自动生成一个测试框架的. |
|
返回顶楼 | |
发表时间:2009-08-25
proper 写道 学习一下,虽然不是很热衷于单元测试.
顺便提一下,你如果用android这个自带工具生成项目的话,是会自动生成一个测试框架的. 你说的自带工具是指用android sdk吗?在eclipse以外的东西? |
|
返回顶楼 | |
发表时间:2009-08-25
gty509 写道 proper 写道 学习一下,虽然不是很热衷于单元测试.
顺便提一下,你如果用android这个自带工具生成项目的话,是会自动生成一个测试框架的. 你说的自带工具是指用android sdk吗?在eclipse以外的东西? 是sdk,在tools这个目录下,名字叫做android... |
|
返回顶楼 | |
发表时间:2009-08-25
proper 写道 gty509 写道 proper 写道 学习一下,虽然不是很热衷于单元测试.
顺便提一下,你如果用android这个自带工具生成项目的话,是会自动生成一个测试框架的. 你说的自带工具是指用android sdk吗?在eclipse以外的东西? 是sdk,在tools这个目录下,名字叫做android... 这样建立的项目,在引入到eclipse也是要分两个项目引入,主体程序一个,tests目录下面的一个。只有这样才能利用eclipse做单元测试。否则要自己写ant build.xml。 |
|
返回顶楼 | |
发表时间:2009-08-25
看不出档次来哦
|
|
返回顶楼 | |