Android配置 常規單元測試

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的單元測試。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章