outline)里面选中该方法右键run as android junit test并指定要测试的包名。

 

 

 

演示代码:

这会见报错

针对采用进行单元测试:

package com.tsh.junit.test;

import com.tsh.junit.service.CalcService;

import android.test.AndroidTestCase;

public class CalServiceTest extends AndroidTestCase {
    public void testAdd() throws Exception{
        CalcService service=new CalcService();
        int res=service.add(3, 5);
        assertEquals(8, res);
    }
}

(2)配置函数库

</instrumentation>

(1)配置指令集,指定要测试的应用程序

咱们的作业代码一般是在一个初的保证下,这个业务类似不克透过右键run as java application,因为android项目不得不运行在手机上的dalvak虚拟机里面

   AndroidManifest.xml中会加上代码:

要以清单文件里配备instrumentation指令集

采用Junit测试框架,是正规Android开发的必用技术。在Junit中好赢得组件,可以如法炮制发送事件以及检测程序处理的不利。

清单文件:

   在Application中加<uses-library
android:name=”android.test.runner”/>

 

public class TestPersonDB extends AndroidTestCase{
    public void testCreateDB(){
        PersonSQLiteOpenHelper helper=new PersonSQLiteOpenHelper(getContext());
        SQLiteDatabase db=helper.getWritableDatabase();

    }

    public void testAdd(){
        PersonDao2 dao=new PersonDao2(getContext());
//        dao.add("wangwu", "123",5000);
//        dao.add("zhangsan", "321",2000);

        long num=8900000000000l;
        Random random=new Random();
        for (int i = 0; i < 50; i++) {
            dao.add("wangwu"+i, num+i+"", random.nextInt(5000));
        }
    }

    public void testFind(){
        PersonDao2 dao=new PersonDao2(getContext());
        boolean result=dao.find("wangwu");
        assertEquals(true, result); //断言:期待的值是true,真实的值是result
    }

    public void update(){
        PersonDao2 dao=new PersonDao2(getContext());
        dao.update("wangwu", "321");
    }

    public void delete(){
        PersonDao2 dao=new PersonDao2(getContext());
        dao.delete("wangwu");
    }

    public void findAll(){
        PersonDao2 dao=new PersonDao2(getContext());
        List<Person> persons=dao.findAll();
        for (Person person : persons) {
            System.out.println(person.toString());
        }

    }

    //用事务的方式实现银行转账
    public void testTransaction(){
        PersonSQLiteOpenHelper helper=new PersonSQLiteOpenHelper(getContext());
        SQLiteDatabase db=helper.getWritableDatabase();
        db.beginTransaction();
        try {
            //这两句执行代码要么都执行成功,要么都不成功
          db.execSQL("update person set account=account-1000 where name=?",new Object[]{"zhangsan"});
          db.execSQL("update person set account=account+1000 where name=?",new Object[]{"wangwu"});
          //标记数据库事务执行成功,默认执行是失败的,数据不会commit,会回滚    
          db.setTransactionSuccessful();
        } finally {
          db.endTransaction();
          db.close();
        }

    }
}

        android:name=”android.test.InstrumentationTestRunner”

(3)加入Junit的jar包

    <instrumentation

1.配置指令集和函数库:

 

 
 需要以AndroidManifest.xml的instrumentation中长InstrumentationTestRunner,并点名要测试的包名。

在outline视窗 (window=>show view=>outline)里面选中该法右键run as android junit test

   <instrumentation android:targetPackage=”com.example.firstdemo”
android:name=”android.test.InstrumentationTestRunner”></instrumentation>

Xml里面写注释 ctrl+shift+/,

2.辑单元测试代码(选择要测试的方法名,右击”Run As”…..”Android Junit
Test”)

[2016-02-27 21:29:54 – 单元测试] 单元测试 does not specify a android.test.InstrumentationTestRunner instrumentation or does not declare uses-library android.test.runner in its AndroidManifest.xml

   项目右击–>Build Path–>Add
Library–>JUnit–>JUnit4–>确定

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tsh.junit"
    android:versionCode="1"
    android:versionName="1.0" >
    <!-- 指令集在manifest节点下 -->
    <!-- 测试用例,名称是固定的,目标包名 -->
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.tsh.junit" >
    </instrumentation>

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="23" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <!-- 使用的函数库,在application节点下 -->
        <uses-library android:name="android.test.runner"/>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

        android:targetPackage=”com.tsh.junit” >

Junit里面打印出绿条,说明没有错误,如果发生不当打印红色的长,错误追逐中来错误信息,如断言错误等,如果清单文件里的音讯记不住,那么请这样操作,new => project =>android android test project => select test target 完成后会发个项目里来清单文件 

新建一个包,里面写测试类,测试类需要继承AndroidTestCase类,写测试方法,需要throws exception抛来非常给测试框架,测试方法里面一般new出待测试的类,调用它的法,然后断言结果,assertEquals(预估, 实际结果)

    <!– 指令集在manifest节点下 –>

 

            <!– 使用的函数库,在application节点下 –>

 

    <!– 测试用例,名称是定点的,目标包名 –>

java代码:

        <uses-library android:name=”android.test.runner”/>

相关文章