IntelliJ IDEA中怎樣使用JUnit4



背景
近期參與了一個Anroid醫療項目,當中項目底層有非常多基礎類及通訊類,並且非常多涉及復雜的字節操作還有多線程同步及狀態機處理。這種項目做一下TDD還是必要的,盡量項眼下期把風險減少一些。
如今的問題是本人使用的是IntelliJ開發的Android項目,剛開始還真不知道怎么下手。在參考了一些資料后。總結了一下IntelliJ中配置JUnit測試環境的步驟,希望對大家有幫助。


環境:
操作系統:Windows 7
IntelliJ版本號:13.1
Android SDK API:19
Java Version:1.7
JUnit 4子版本號:JUnit 4.11(IntelliJ自帶)


步驟:
一、在項目的AndroidManifest.xml文件里做例如以下更改:
在application節點下加入

<uses-library android:name="android.test.runner"/>,如圖:
在根節點下加入例如以下內容:
當中targetPackage跟你所在項目的包名同樣(參見你的AppManifest.xml文件頂部:



二、為你所在項目加入例如以下jar包引用
1、junit-4.11
2、harmcrest-core-1.3
3、annotations

三、調整項目對jar包的引用順序

做這個調整是由於我們使用的Android API中包括了JUnit 3.8,默認SDK是放在最前面的。否則代碼中的Junit會被覺得是Junit 3.8,那你就僅僅能使用Junit 3的測試方式了。

四、在項目文件夾樹中,創建一個與src平級的文件夾用於存放全部的測試類。
簡單起見我使用的是tests.

除了創建文件夾。我們還須要指定新創建的文件夾為測試根文件夾:
右鍵tests文件夾,選擇'Mark Directory As'--->'Test Sources Root'


五、在你的測試根文件夾下創建你的測試分類文件夾及詳細的測試類
在測試類內部你須要的僅僅是給測試方法加上@Test標注。


六、執行你的測試
1、在代碼編輯界面,在你的測試方法體中點擊右鍵,在彈出的菜單中選中以JUnit的方式執行

這樣的方式很適合剛寫完測試。亟待看到某個測試的執行結果的場景。

另一種使用快捷鍵的方式來單獨執行某個測試,我們僅僅須要將文本焦點切換到某個測試方法中,然后在使用組合鍵Ctrl+Shift+F10就能夠達到同上面一樣的測試效果。

2、編輯執行Configuration
點擊Configurationbutton,在彈出界面中按例如以下步驟創建一個JUnit執行配置



在彈出的配置窗體做簡單的配置。

詳細配置細節請參見本文參考部分的《IntelliJ IDEA對JUnit支持的官方文檔》部分。

這樣的方式適合於批量運行測試的場景。



回想JUnit3的使用方式
1、讓你的測試類繼承自Testcase
2、每一個測試方法名必須以小寫test為前綴
備注:IntelliJ IDEA已經內部支持JUnit4,Android SDK中也至少對JUnit3做了支持。因此並不須要再從Maven中對JUnit進行依賴管控。

除非你須要使用最新的JUnit中的某項特性。



更新:
2014-10-16: 在開啟JUnit4.0功能后項目中涉及Android生命周期的測試類(比方AndroidTestCase)將沒有辦法執行。原因在於AndroidTestCase這些是由SDK支持的,可是SDK中引用的是JUnit3.8的類庫,我的理解是假設你引用的是JUnit4.0,那么在執行時AndroidTestCase這些Android特有的測試依賴的JUnit3.8在執行時是不會載入的。測試執行器嘗試載入該類測試時就會報錯。 因此,假設你希望在你的項目中測試與Android生命周期相關的類的話,那就僅僅能在項目中摒棄JUnit4。


參考:
在IntelliJ IDEA的項目中開啟Annotations

IntelliJ IDEA對JUnit支持的官方文檔

IntelliJ IDEA提供的JUnit測試的Sample項目


ADT中怎樣配置JUnit

JUnit4測試說明:

JUnit4在IntelliJ IDEA中的使用(應該有三篇,可是僅僅有后兩篇可見。可能第一篇就是將配置的,可是不可見--有點遺憾)

Android單元測試初探--Instrumentation

IntelliJ IDEA和ADT的持續測試插件Infinitest

ADT中使用JUnit的一個教程

一個老程序猿的Android測試驅動開發實踐系列3篇(主要側重界面交互測試)










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM