前言
在前面文章中,我大概梳理了一下自己在以往學(xué)習(xí)到的Android中常用的一些自動(dòng)化測(cè)試痢法,這篇文章就講一講如何來(lái)一步步使用本地單元測(cè)試Local Unit Tests崇堰。文章中所講的都是JUnit 4 在Android中的使用座享,詳細(xì)的介紹可以查看這篇文章:
Android自動(dòng)化測(cè)試--學(xué)習(xí)淺談
使用
首先我們?cè)贏ndroid Studio中新建一個(gè)項(xiàng)目帝嗡,取名為 LocalUnitTests。
然后一直選擇Next坟桅,選擇創(chuàng)建一個(gè)Empty Activity相满。
然后選擇Next,使用默認(rèn)的設(shè)置桦卒,選擇Finish立美。
項(xiàng)目創(chuàng)建完成后,project面板中默認(rèn)是Android方灾,我們想將他切換到Project
選中Project
接下來(lái)我們展開app建蹄,看一下目錄結(jié)構(gòu)
從目錄結(jié)構(gòu)中我們可以看到碌更,除了main文件夾外,還有兩個(gè)文件夾androidTest和test洞慎。這兩個(gè)都是Android Studio自動(dòng)生成的(我的Android Studio版本2.2.3)痛单,也就是用來(lái)編寫我們的測(cè)試代碼的。為了學(xué)習(xí)劲腿,我們先將相關(guān)的全部刪掉旭绒,只保留main文件夾需要的。
接下來(lái)我們看看如何一步一步的來(lái)使用焦人,首先在app目錄的 build.gradle 文件中添加下面的引入挥吵,根據(jù)提示點(diǎn)擊Sync Now。
dependencies {
// JUnit 4 framework
testCompile 'junit:junit:4.12'
}
接下來(lái)我們?cè)陧?xiàng)目中新建一個(gè)Calculation類花椭,并且添加一些我們需要測(cè)試的方法
接下來(lái)我們添加測(cè)試方法忽匈,選中add >>點(diǎn)擊鼠標(biāo)右鍵 >> Go To >> Test
選擇Create New Test
Testing library選擇JUnit,同時(shí)選中待測(cè)試的方法矿辽,點(diǎn)擊OK丹允。
選擇目錄為...\app\src\test\java...,點(diǎn)擊OK
我們可以看到袋倔,Android Studio已經(jīng)為我們生成了測(cè)試類
接下來(lái)我們編寫待測(cè)試的方法
public class Calculation {
/**
* 簡(jiǎn)單模擬平時(shí)編寫的方法
* @param a
* @param b
* @return
*/
public int add(int a, int b) {
return a + b;
}
public int multiply(int one, int another) {
return one * another;
}
}
測(cè)試類
public class CalculationTest {
Calculation calculation;
@BeforeClass
public static void start() throws Exception {
System.out.println("類運(yùn)行時(shí)調(diào)用一次");
}
@AfterClass
public static void end() throws Exception {
System.out.println("類結(jié)束時(shí)調(diào)用一次");
}
@Before
public void before() throws Exception {
calculation = new Calculation();
System.out.println("每個(gè)test方法前都會(huì)調(diào)用");
}
@After
public void after() throws Exception {
System.out.println("每個(gè)test方法后都會(huì)調(diào)用");
}
@Test
public void add() throws Exception {
System.out.println("test add");
int r = calculation.add(2, 3);
Assert.assertEquals(5, r);
}
@Test
public void multiply() throws Exception {
System.out.println("test multiply");
int r = calculation.multiply(2, 3);
Assert.assertEquals(6, r);
}
}
接下來(lái)我們運(yùn)行一下看看效果雕蔽,直接測(cè)試類上單擊鼠標(biāo)右鍵 >> 選擇Run 'CalculationTest'
運(yùn)行結(jié)果
接下來(lái)我們修改一下add方法,將正確結(jié)果5改為了6宾娜,再運(yùn)行試試
@Test
public void add() throws Exception {
System.out.println("test add");
int r = calculation.add(2, 3);
Assert.assertEquals(6, r);//正確結(jié)果5改為了6
}
運(yùn)行結(jié)果
從結(jié)果中我們可以看出來(lái)批狐,有醒目的紅色輸出了錯(cuò)誤信息,這是因?yàn)槲覀償嘌缘?code>Assert.assertEquals(6, r)碳默,與實(shí)際得到的值不一致提示我們的。實(shí)際測(cè)試中我們也是通過(guò)Assert.assert
來(lái)斷言預(yù)期值與實(shí)際值之間的關(guān)系來(lái)判斷結(jié)果缘眶。除了assertEquals
外還有很多其他方法嘱根,詳細(xì)的可以查看官方API Assert。
接下來(lái)我們恢復(fù)剛剛的修改巷懈,然后修改一下Calculation
中的add方法该抒,增加了一句log打印語(yǔ)句。
public int add(int a, int b) {
Log.d("TAG", "add");
return a + b;
}
然后我們看看運(yùn)行結(jié)果
同樣結(jié)果中拋出了異常顶燕,因?yàn)槲覀儎倓傇黾拥?code>Log.d("TAG", "add");是Android中包含的方法凑保,在java中并沒(méi)有。而目前我們使用的Local Unit Tests
也只是引入了JUnit
涌攻,所以沒(méi)辦法直接調(diào)用欧引。所以就有了我們的設(shè)備單元測(cè)試Instrumented Unit Tests
,詳細(xì)的使用可以查看我的下一篇文章恳谎。