編輯:關於Android編程
介紹過了如何用intrumentation進行android單元測試,其實還有一種方法同樣可以,那就是利用AndroidTestCase來做單元測試,intrumentationTestCase和AndroidTestCase都是Junit.framwork.TestCase的子類,二者代表不用的方向。
如果想通過AndroidTestCase,大致可以通過以下幾個步驟實現:
1. 添加自己的test case code, 讓他們繼承自AndroidTestCase。
2. 定義自己的testSuite類,用來管理test cases.
3. 定義自己的testRunner,用來執行測試
下面首先來看一下這種方法所涉及到的android的類以及接口。
AndroidTestCase
Android test cases classes需要從這個類派生出來,而不再是從junit.framework.TestCase. 二者之間的最主要區別就是Android test cases提供了一個方法getContext()來獲取當前的上下文變量,這在android測試中很重要的,因為很多的android api都需要context。
AndroidTestCase主要成員:
setUp() //Sets up the fixture, for example, open a network connection.
tearDown() //Tears down the fixture, for example, close a network connection.
testAndroidTestCaseSetupProperly()
TestSuite (in package junit.package)
一個TestSuite就是一系列test case的集合。通過testsuite可以更好的來管理test case
TestSuite主要成員:
Void addTest (Test test) //Adds a test to the suite.
void addTestSuite(Class testClass) //Adds the tests from the given class to the suite
下面是一小段往test suite中添加test case的示例:
TestSuite suite= new TestSuite(); suite.addTest(new MathTest("testAdd")); //Adds a test to the suite. suite.addTest(new MathTest("testDivideByZero"));或者可以通過addTestSuite()來添加:suite.addTestSuite(MathTest.class); TestListener (in package junit.framework)
這是一個 interface ,用來監聽測試進程
有以下4個Public Methods :
abstract void addError(Test test,Throwable t)
An error occurred.
abstract void addFailure(Test test,AssertionFailedError t)
A failure occurred.
abstract void endTest(Test test)
A test ended.
abstract void startTest(Test test)
A test started.
AndroidTestRunner
繼承自class junit.runner.BaseTestRunner,但是它沒有提供ui, 甚至來一個基於console的UI都沒有,所以,如果想要很好的查看測試結果的話,你需要自己來處理來自於test runner的callback 函數。一會可以通過例子演示一下
AndroidTestRunner主要方法:
SetTest();
runTest()
addTestListener()
setContext()
如果要使用AndroidTestRunner,需要在permission in manifest.xml中添加權限:
<uses-library android:name="android.test.runner" />
最後,通過一個實例來演示一下:
1. 寫一個test case:
MathTest.java
package com.ut.prac;
import android.test.AndroidTestCase;
import android.util.Log;
public class MathTest extends AndroidTestCase {
protected int i1;
protected int i2;
static final String LOG_TAG = "MathTest";
public void setUp() {
i1 = 2;
i2 = 3;
}
public void testAdd() {
Log.d( LOG_TAG, "testAdd" );
assertTrue( LOG_TAG+"1", ( ( i1 + i2 ) == 5 ) );
}
public void testAndroidTestCaseSetupProperly() {
super.testAndroidTestCaseSetupProperly();
Log.d( LOG_TAG, "testAndroidTestCaseSetupProperly" );
}
}
2. 定義一個test suite類。
ExampleSuite.java
package com.ut.prac;
import junit.framework.TestSuite;
public class ExampleSuite extends TestSuite {
public ExampleSuite() {
addTestSuite( MathTest.class );
}
}
ImageSelector 簡介Android自定義相冊,實現了拍照、圖片選擇(單選/多選)、ImageLoader無綁定 任由開發者選擇https://github.c
具體代碼如下:main.xml復制代碼 代碼如下:<LinearLayout xmlns:android=http://schemas.android.com/ap
歡迎我的獨立博客,博客地址http://yywang.info 在android開發中,經常用到去解析xml文件,常見的解析xml的方式有一下三種:SAX、Pu
在android開發中會碰到有頂部導航並且下面顯示的內容是一個listview,此時要想實現左右滑動切換頂部導航的選項是不能實現的,因為listview自己消耗橫向滑動事