●程式說明--Android Unit Test

1.androidTest:要開android設備才可以測的=>要用到android元件(可以用模擬器也可以用實機測試)
2.test: 不用開android設備就可以測的 =>純java程式
 
(一)test
*建一個MyMath class
//建一個簡單的class做測試內容
public class MyMath {
    public static int add(int x, int y) {
        return x + y;
    }
}
 
*建一個Test1 class
public class Test1 {
    //一定要加@Test,說明是在測試
    @Test
    public void myTest()
    {
        //assert如果是false,就會中斷
        //assertEquals,當兩個參數的值相等就代表測試成功
        assertEquals(10, MyMath.add(3,7));
    }
 
}
 
=>測試,到檔案按右鍵=>run
android unit test / TestCase
 
=>測試成功會是綠色的
android unit test / TestCase
 
=>測試失敗是紅色的
android unit test / TestCase
 
=>在整個測試檔上選整個專案測試,就會每個測試程式都run
android unit test / TestCase
 
(二)androidTest
=>測試新增的資料是否正確
//一定要加@RunWith,代表測試
@RunWith(AndroidJUnit4.class)
public class MyDAOTest1 {
    @Test
    public void AddandGetTest(){
        //取得context就可以建立phoneDAODBImpl物件
        Context appContext = InstrumentationRegistry.getTargetContext();
        phoneDAODBImpl dao = new phoneDAODBImpl(appContext);
        phone p = new phone();
        p.name "BBB";
        p.tel "123";
        p.addr "aabb";
        dao.addOne(p);
        phone p1 = dao.getOne(1);
        assertEquals("AA",p1.name);
    }
}
 
=>測試失敗的畫面
android unit test / TestCase
 
=>預期結果是AA但是真實結果為BBB
android unit test / TestCase
 
=>測試成功的畫面
android unit test / TestCase
 
 
//清除資料表以後重建一筆測試
@Test
public void clearAndAddOneDataAndGetTest()
{
    Context appContext = InstrumentationRegistry.getTargetContext();
    phoneDAODBImpl dao = new phoneDAODBImpl(appContext);
    phone p = new phone();
    p.name "BBB";
    p.tel "123";
    p.addr "aabb";
    //清除資料後再新增一筆測試,確保資料庫正確
    dao.clearAll();
    dao.addOne(p);
    //取得資料庫的資料放到陣列中
    phone pArray[] = dao.getList();
    //取得第一筆資料中的name來測試
    assertEquals("BBB", pArray[0].name);
 
}
 
//測試刪除
@Test
public void testDelete1(){
Context appContext = InstrumentationRegistry.getTargetContext();
phoneDAODBImpl dao = new phoneDAODBImpl(appContext);
phone p1=new phone("ccc","333","123456");
phone p2=new phone("ddd","444","123456");
dao.clearAll();
dao.addOne(p1);
dao.addOne(p2);
phone pArray[]=dao.getList();
//因為前面new c1時沒有給id,所以這邊設定idc1
p1.id=pArray[0].id;
dao.delete(p1);
phone pArray2[]=dao.getList();
assertEquals("ddd",pArray2[0].name);
}
 
//測試更新
@Test
public void testUpdate(){
Context appContext = InstrumentationRegistry.getTargetContext();
phoneDAODBImpl dao = new phoneDAODBImpl(appContext);
phone p1=new phone("ccc","333","123456");
 
dao.clearAll();
dao.addOne(p1);
phone parray[]=dao.getList();
p1.id=parray[0].id;
p1.name="fff";
dao.update(p1);
phone parray2[]=dao.getList();
assertEquals("fff", parray2[0].name);
}

 

 

●程式參考(GitHub):Android Unit Test單元測試 (測試程式與DAO和SQLite的程式放在一起)

 

arrow
arrow
    創作者介紹
    創作者 muchone 的頭像
    muchone

    簡單。生活。享受

    muchone 發表在 痞客邦 留言(0) 人氣()