对应用进行单元测试:

使用Junit测试框架,是正规Android开发的必用技术。在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性。

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

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

   需要在AndroidManifest.xml的instrumentation中增加InstrumentationTestRunner,并指定要测试的包名。

   AndroidManifest.xml中会添加代码:

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

(2)配置函数库

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

(3)加入Junit的jar包

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

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

示例代码:

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

    }
}

 

posted on 2015-07-18 19:04  Joanna.Yan  阅读(1223)  评论(0编辑  收藏  举报