標籤:
對應用進行單元測試:
使用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(); } }}
Android Junit測試架構