背景
近參與了一個(gè)Anroid醫(yī)療項(xiàng)目,其中項(xiàng)目底層有很多基礎(chǔ)類及通訊類,而且很多涉及復(fù)雜的字節(jié)操作還有多線程同步及狀態(tài)機(jī)處理。這樣的項(xiàng)目做一下TDD還是必要的,盡量項(xiàng)目前期把風(fēng)險(xiǎn)降低一些。
現(xiàn)在的問題是本人使用的是IntelliJ開發(fā)的Android項(xiàng)目,剛開始還真不知道怎么下手。在參考了一些資料后,總結(jié)了一下IntelliJ中配置JUnit測試環(huán)境的步驟,希望對大家有幫助。
環(huán)境:
操作系統(tǒng):Windows 7
IntelliJ版本:13.1
Android SDK API:19
Java Version:1.7
JUnit 4子版本:JUnit 4.11(IntelliJ自帶)
步驟:
一、在項(xiàng)目的AndroidManifest.xml文件中做如下更改:
在application節(jié)點(diǎn)下添加
<uses-library android:name="android.test.runner"/>,如圖:
在根節(jié)點(diǎn)下添加如下內(nèi)容:
其中targetPackage跟你所在項(xiàng)目的包名相同(參見你的AppManifest.xml文件頂部:
二、為你所在項(xiàng)目添加如下jar包引用
1、junit-4.11
2、harmcrest-core-1.3
3、annotations
三、調(diào)整項(xiàng)目對jar包的引用順序
做這個(gè)調(diào)整是因?yàn)槲覀兪褂玫腁ndroid API中包含了JUnit 3.8,默認(rèn)SDK是放在前面的,否則代碼中的Junit會被認(rèn)為是Junit 3.8,那你只能使用Junit 3的測試方式了。
四、在項(xiàng)目目錄樹中,創(chuàng)建一個(gè)與src平級的目錄用于存放所有的測試類。
簡單起見我使用的是tests.
除了創(chuàng)建目錄,我們還需要指定新創(chuàng)建的目錄為測試根目錄:
右鍵tests目錄,選擇'Mark Directory As'--->'Test Sources Root'
五、在你的測試根目錄下創(chuàng)建你的測試分類目錄及具體的測試類
在測試類內(nèi)部你需要的只是給測試方法加上@Test標(biāo)注。
六、運(yùn)行你的測試
1、在代碼編輯界面,在你的測試方法體中點(diǎn)擊右鍵,在彈出的菜單中選中以JUnit的方式運(yùn)行
這種方式非常適合剛寫完測試,亟待看到某個(gè)測試的運(yùn)行結(jié)果的場景。
還有一種使用快捷鍵的方式來單獨(dú)運(yùn)行某個(gè)測試,我們只需要將文本焦點(diǎn)切換到某個(gè)測試方法中,然后在使用組合鍵Ctrl+Shift+F10可以達(dá)到同上面一樣的測試效果。
2、編輯運(yùn)行Configuration
點(diǎn)擊Configuration按鈕,在彈出界面中按如下步驟創(chuàng)建一個(gè)JUnit運(yùn)行配置
在彈出的配置窗口做簡單的配置。具體配置細(xì)節(jié)請參見本文參考部分的《IntelliJ IDEA對JUnit支持的官方文檔》部分。
這種方式適合于批量執(zhí)行測試的場景。
回顧JUnit3的使用方式
1、讓你的測試類繼承自Testcase
2、每個(gè)測試方法名必須以小寫test為前綴
備注:IntelliJ IDEA已經(jīng)內(nèi)部支持JUnit4,Android SDK中也至少對JUnit3做了支持,因此并不需要再從Maven中對JUnit進(jìn)行依賴管控。除非你需要使用新的JUnit中的某項(xiàng)特性。
參考:
在IntelliJ IDEA的項(xiàng)目中開啟Annotations
https://www.jetbrains.com/idea/help/enabling-annotations.html
IntelliJ IDEA對JUnit支持的官方文檔
https://confluence.jetbrains.com/display/IntelliJIDEA/Unit+Testing+and+Code+Coverage
IntelliJ IDEA提供的JUnit測試的Sample項(xiàng)目
https://github.com/JetBrains/intellij-samples/tree/master/unit-tests-example
ADT中如何配置JUnit
http://blog.csdn.net/huangbiao86/article/details/6709742
JUnit4測試說明:
http://blog.csdn.net/xuxuxiaojie/article/details/5628671
JUnit4在IntelliJ IDEA中的使用(應(yīng)該有三篇,但是只有后兩篇可見?赡艿谝黄菍⑴渲玫,但是不可見--有點(diǎn)遺憾)
http://blog.16 .com/xianfuying@126/blog/static/2196000520110932132970/
Android單元測試初探--Instrumentation
http://www.oschina.net/question/54100_27061
IntelliJ IDEA和ADT的持續(xù)測試插件Infinitest
http://infinitest.github.io/
ADT中使用JUnit的一個(gè)教程
http://www.cnblogs.com/draem0507/archive/2013/04/25/3043557.html
一個(gè)老程序員的Android測試驅(qū)動開發(fā)實(shí)踐系列3篇(主要側(cè)重界面交互測試)
http://blog.csdn.net/yt7589/article/details/12427185
http://blog.csdn.net/yt7589/article/details/12427185
http://blog.csdn.net/yt7589/article/details/12445283