职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 414|回复: 8

Android单元测试方法

[复制链接]
楠楠 发表于 2011-8-24 11:15 | 显示全部楼层 |阅读模式
这里我新建一个And......
很不错,还从来木有用......
是的,我就是有时候忘......
不规范啊:  1.不......
kyfxbl写道 不......
lovemobile......
shopping同志......
iadcn写道 sh......
哈哈哈,楼上应该说,......
看看,顺便挣点分,没......


这里我新建一个Android项目,叫JUnitDemo。

Activity所在包为:com.deng
在com.deng.service包下新建一个类,用来模拟被测试的类,如下:
Java代码  
package com.deng.service;   
  
/**  
* 待被测试的类  
*/  
public class DoWork {   
  
    public void doA() {   
        System.out.println("在这里做具体事务:A");   
    }   
  
    public void doB(String msg) {   
        System.out.println("在这里做具体事务:" + msg);   
    }   
}  

package com.deng.service;

/**
* 待被测试的类
*/
public class DoWork {

        public void doA() {
                System.out.println("在这里做具体事务:A");
        }

        public void doB(String msg) {
                System.out.println("在这里做具体事务:" + msg);
        }
}

下面,我们来建单元测试类,在com.deng.test包下新建(用一个专门的包来放测试类,养成良好的编程习惯):
Java代码  
package com.deng.test;   
  
import android.test.AndroidTestCase;   
  
import com.deng.service.DoWork;   
  
public class ForJUnitTest extends AndroidTestCase {   
  
    /**  
     * 命名要规范,以test开头  
     */  
    public void testDoWord(){   
        DoWork dw = new DoWork();   
        dw.doA();   
        dw.doB("辞职");   
    }   
      
}  

package com.deng.test;

import android.test.AndroidTestCase;

import com.deng.service.DoWork;

public class ForJUnitTest extends AndroidTestCase {

        /**
         * 命名要规范,以test开头
         */
        public void testDoWord(){
                DoWork dw = new DoWork();
                dw.doA();
                dw.doB("辞职");
        }
       
}
该类要继承AndroidTestCase类,



最后,修改Manifest文件:<?xml version="1.0" encoding="utf-8"?>
Xml代码  
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="com.deng" android:versionCode="1" android:versionName="1.0">  
    <uses-sdk android:minSdkVersion="8" />  
  
    <application android:icon="@drawable/icon" android:label="@string/app_name">  
        <activity android:name=".JUnitDemoActivity" android:label="@string/app_name">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
        <!-- 加上下面这句,固定写法 -->  
        <uses-library android:name="android.test.runner" />  
    </application>  
    <!-- 再加上下面这句。注意:android:targetPackage等号右边的路径填写跟上面manifest中package的路径一致即可,   
    哥试过改成com.deng.test,可惜会出错。android:name是固定值 -->  
    <instrumentation android:targetPackage="com.deng"  
        android:name="android.test.InstrumentationTestRunner" android:label="这个可以任意写"></instrumentation>  
</manifest>  

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.deng" android:versionCode="1" android:versionName="1.0">
        <uses-sdk android:minSdkVersion="8" />

        <application android:icon="@drawable/icon" android:label="@string/app_name">
                <activity android:name=".JUnitDemoActivity" android:label="@string/app_name">
                        <intent-filter>
                                <action android:name="android.intent.action.MAIN" />
                                <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                </activity>
                <!-- 加上下面这句,固定写法 -->
                <uses-library android:name="android.test.runner" />
        </application>
        <!-- 再加上下面这句。注意:android:targetPackage等号右边的路径填写跟上面manifest中package的路径一致即可,
        哥试过改成com.deng.test,可惜会出错。android:name是固定值 -->
        <instrumentation android:targetPackage="com.deng"
                android:name="android.test.InstrumentationTestRunner" android:label="这个可以任意写"></instrumentation>
</manifest>
这样我们就可测试DoWork类中的两个方法了,具体运行步骤:
在Outline-->ForJunitTest-->testDoWord()方法上面点右键,选择Run as下面的Android JUnit Test



测试结果如下,控制台上就看到我们写的输出语句:



大小: 75.3 KB

大小: 190.5 KB
JUnitDemo.zip (43.5 KB)
下载次数: 27
查看图片附件

芷馨 发表于 2011-8-24 11:15 | 显示全部楼层
很不错,还从来木有用过 android.test

木已 发表于 2011-8-24 11:15 | 显示全部楼层
是的,我就是有时候忘记在Manifest文件中加那2个东东,搞得有时候都很纠结为什么报红线..

broken 发表于 2011-8-24 11:16 | 显示全部楼层
kyfxbl 写道
不规范啊:

1. 不是单独的package,而是单独的src folder
2. 楼主方法命名没问题,不过类命名不太对,比如MyClass的单元测试类,应该命名为MyClassTest,而不是ForUnitTest


叫我小乖 发表于 2011-8-24 11:16 | 显示全部楼层
lovemobile 写道
kyfxbl 写道
不规范啊:

1. 不是单独的package,而是单独的src folder
2. 楼主方法命名没问题,不过类命名不太对,比如MyClass的单元测试类,应该命名为MyClassTest,而不是ForUnitTest



恩,有道理

无处不在 发表于 2011-8-24 11:16 | 显示全部楼层
shopping同志,您辛苦啦~哈哈

江波 发表于 2011-8-24 11:16 | 显示全部楼层
iadcn 写道
shopping同志,您辛苦啦~哈哈

同志们辛苦了

ksdal 发表于 2011-8-24 11:16 | 显示全部楼层
哈哈哈,楼上应该说,为人民服务~

北大青鸟 发表于 2011-8-24 11:16 | 显示全部楼层
看看,顺便挣点分,没分发帖了
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-6 02:59 , Processed in 0.145207 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表