android 單元測試
基本流程
新建一個測試工程( Android Test Project),選擇你要測試的工程,或者說你要測試的類所在的工程,創建測試用例,如果有需要還可以建立TestSuite來配置要測試的用例,最后右鍵選擇測試用例類,run as – >“Android Junit Test” 即可。然后你也可以直接在被測試工程中測試,這樣不需要建立測試工程。
1、建立測試工程
圖 1
2、選擇要測試的工程
圖 2
3、選擇目標平臺
圖 3
4、選擇finish后,在AndroidManifest.xml中填寫如下代碼:
<! – 添加InstrumentationTestRunner ,targetPackage修改成你的測試工程的包名即可--> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.umengsocialtest" /> <! – application 添加test runner --> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <! – 添加test runner --> <uses-library android:name="android.test.runner" /> </application> |
5、右鍵點擊測試工程的“src”目錄,選擇”new”-->“Junit Test Case”,然后輸入測試用例名稱和要繼承的測試類,正常情況下,繼承自AndroidTestCase即可,如果你要測試的類依賴于Activity,你可以繼承自ActivityInstrumentationTestCase2<T>,其中T為你mock的Activity,你可以在測試工程下新建一個Activity用于測試,這里我們選擇繼承自ActivityInstrumentationTestCase2。最后選擇你要測試的類,這里我選擇的是UMAppAdapter。選擇”next”,然后選擇你要測試的方法,勾選即可。如圖4
圖 4
6、選擇要測試的方法
圖 5
7、如果你要測試的類需要Activity參數,你可以創建一個Activity來用于測試,使用AndroidTestCasse則不需要這么做。代碼如下:
public class MockActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } |
8、在測試用例中,填寫代碼
public class UMAppAdapterTest extends ActivityInstrumentationTestCase2<MockActivity> { /** * */ private Activity mActivity = null; /** * */ private UMBaseAdapter mAdapter = null; /** * @Title: UMAppAdapterTest * @Description: * UMAppAdapterTest Constructor * * @param activityClass */ public UMAppAdapterTest(Class<MockActivity> activityClass) { super(activityClass); } public UMAppAdapterTest() { super(MockActivity.class); setName("MockActivity"); } @Before protected void setUp() throws Exception { super.setUp(); mActivity = getActivity(); assertNotNull(mActivity); } @After protected void tearDown() throws Exception { super.tearDown(); mActivity = null; clearState(); } @Test public void testGetBitmap() { mAdapter = new UMAppAdapter(mActivity); // 實際會觸發截屏操作,返回當前截屏 assertNotNull(mAdapter.getBitmap()); // 使用控制器來截圖, 實際上調用的是mAdapter.getBitmap() UMScrShotController controller = UMScrShotController.getInstance(); controller.setAdapter(mAdapter); assertNotNull(controller.takeScreenShot()); } } |
為了篇幅簡短,這里只列出了部分測試用例代碼。
字體: 小 中 大 | 上一篇 下一篇 | 打印 | 我要投稿
二、TestSuite的使用
1、新建一個JunitTest Case,父類選擇TestSuite,如圖6。
圖 6
2、樣例代碼如下,覆寫suite(),然后添加你要測試的測試用例即可。com.example.socialtest.ut.scrshotlib.UMAppAdapterTest是UMAppAdapterTest這個測試用例的完整路徑,添加進去即可。多個測試用例使用逗號隔開。如下:
public class YourTestSuite extends TestSuite { public static Test suite() { return new TestSuiteBuilder(SocialTestSuite.class).includePackages( "com.example.socialtest.ut.scrshotlib.UMAppAdapterTest", "com.example.socialtest.ut.scrshotlib.UMScrShotControllerTest" ).build(); } } |
3、最后右鍵選擇你的TestSuite類,選擇”runas “, 然后選擇android Junit Test即可運行TestSuite.。
如圖7。