Android單元測試分爲兩個部分, 一部分是與Android本身無關的測試,也就是業務邏輯測試,該部分測試不涉及Activity這一層,我們暫且成爲常規的單元測試。另外的一種測試就是於Activity相關的單元測試
這裏,我們先談一下於Activity無關的常規單元測試。
在通常情況下,我們會選擇在需要添加測試用例的類上邊點擊右鍵,選擇new/JUnitTestCase然後,Eclipse會跳出一個讓你選擇添加測試用例的基本信息。比如類名,包名什麼的。添加完畢後,然後在自動產生的方法上點擊右鍵 run as /Junit Test.這時候,會出現一個錯誤
Internal Error (classFileParser.cpp:3161), pid=5320,tid=6952
# Error:ShouldNotReachHere()
下面說一下詳細步驟
1 創建項目DroidUnitTest。
在包中加入處理業務邏輯的類MyDataHelper ,在裏邊添加一個方法(內容隨意)。新建 名爲test 的sourcefolder,添加測試包。然後在MyDataHelper上右鍵,選擇new/JUnitTestCase .填寫包名,類名等信息,點擊ok,如圖所示。
2. 在MyDataHelper中添加如下方法
package henu.cjt.mobile;
public class MyDataHelper {
public int add(int a ,int b){
return a+b;
}
}
在MyDataHelperTest中添加如下內容
package henu.cjt.mobile.test;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import henu.cjt.mobile.*;
public class MyDataHelperTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
MyDataHelper myDataHelper=new MyDataHelper();
@Test
public void addTest(){
int a=1;
int b=1;
int res= myDataHelper.add(a,b);
Assert.assertEquals(2,res);
}
}
在 addTest點擊鼠標右鍵,選擇runas JuitTest,你會收到如下錯誤
#
# A fatal error has been detected by the Java RuntimeEnvironment:
#
# Internal Error(classFileParser.cpp:3161), pid=5320, tid=6952
# Error:ShouldNotReachHere()
#
# JRE version: 6.0_22-b04
# Java VM: Java HotSpot(TM) Client VM (17.1-b03 mixedmode windows-x86 )
# An error report file with more information is saved as:
#D:\eclipse_develope\workspace\DroidUnitTest\hs_err_pid5320.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
不用擔心,這是因爲Android默認運行單元測試的是Android.jar2.2,而Juint是基於jre 以及Junit的,所以,運行會失敗,同時也跟Android做的單元測試封裝有關。看接下來的配置
3.選擇項目,Run asconfiguration ,在彈出的界面中要將Bootstrap一項Android2.2移除,並添加jre 以及 Junit(以及其他你單元測試要用到的包)。其實也就是你要配置一下運行Junit時的環境。如圖所示。
配置完成之後,在項目上選擇run as configuration 找到剛纔所建立的Junit ,點擊run即可看到運行的單元測試的效果。當然你可以選擇其他的Junit節點下的測試配置,只要保證該配置的BootstrapEntries沒有錯即可。
在單個方法上運行測試用例是也是一樣,只要保證運行時的配置沒問題,就行了。
4. 你需要注意,如果你要測試的方法中引入了某些包,那麼你這個Bootstrap Entries 也應該包含該包,否則測試用例將會找不到對應的類。
例如,我們在MyDataHelper中調用了Android包中HttpClient 類,那麼在對單元測試的run進行配置時,也應該加入該類所在的包。但是,絕不能加入Android.jar應爲這樣的話,你又回到原來的問題上來。應該只加一部分。可以從網上找到相應的包,在runconfiguration中,點擊 add external jar將這些包加入到Bootstrap Entries中,再run就可以了。
Ok,Android上的常規單元測試就介紹到這裏,在接下來的文章中,我將介紹如何建立Activity的單元測試。