对应用进行单元测试:
使用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()); Listpersons=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(); } }}