Robotium的測(cè)試類(lèi)ActivityInstrumentationTestCase2是繼承于Junit3的TestCase類(lèi),所以并沒(méi)有提供Junit4的特性.如網(wǎng)上總結(jié)說(shuō)的
成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比洪江管理區(qū)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式洪江管理區(qū)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋洪江管理區(qū)地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。
@Override public void setUp() throws Exception { //setUp() is run before a test case is started. //This is where the solo object is created. super.setUp(); this.activity = this.getActivity(); this.solo = new Solo(getInstrumentation(), getActivity()); } @Override public void tearDown() throws Exception { //tearDown() is run after a test case has finished. //finishOpenedActivities() will finish all the activities that have been opened during the test execution. solo.finishOpenedActivities(); }但事實(shí)上我們?cè)谶@個(gè)腳本只是去創(chuàng)建兩個(gè)Note,并不需要每執(zhí)行完一個(gè)case都要去初始化solo和關(guān)閉所有activities。google后沒(méi)有發(fā)現(xiàn)有現(xiàn)成的取代@beforeclass和@aferclass的方法。
package com.example.android.notepad.test; import com.robotium.solo.Solo; import android.test.ActivityInstrumentationTestCase2; import android.app.Activity; @SuppressWarnings("rawtypes") public class TCCreateNote extends ActivityInstrumentationTestCase2{ private static Solo solo = null; public Activity activity; private static final int NUMBER_TOTAL_CASES = 2; private static int run = 0; private static Class> launchActivityClass; //對(duì)應(yīng)re-sign.jar生成出來(lái)的信息框里的兩個(gè)值 private static String mainActiviy = "com.example.android.notepad.NotesList"; private static String packageName = "com.example.android.notepad"; static { try { launchActivityClass = Class.forName(mainActiviy); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @SuppressWarnings("unchecked") public TCCreateNote() { super(packageName, launchActivityClass); } @Override public void setUp() throws Exception { //setUp() is run before a test case is started. //This is where the solo object is created. super.setUp(); //The variable solo has to be static, since every time after a case's finished, this class TCCreateNote would be re-instantiated // which would lead to soto to re-instantiated to be null if it's not set as static if(solo == null) { TCCreateNote.solo = new Solo(getInstrumentation(), getActivity()); } } @Override public void tearDown() throws Exception { //Check whether it's the last case executed. run += countTestCases(); if(run >= NUMBER_TOTAL_CASES) { solo.finishOpenedActivities(); } } public void testAddNoteCNTitle() throws Exception { solo.clickOnMenuItem("Add note"); solo.enterText(0, "中文標(biāo)簽筆記"); solo.clickOnMenuItem("Save"); solo.clickInList(0); solo.clearEditText(0); solo.enterText(0, "Text 1"); solo.clickOnMenuItem("Save"); solo.assertCurrentActivity("Expected NotesList Activity", "NotesList"); solo.clickLongOnText("中文標(biāo)簽筆記"); solo.clickOnText("Delete"); } public void testAddNoteEngTitle() throws Exception { solo.clickOnMenuItem("Add note"); solo.enterText(0, "English Title Note"); solo.clickOnMenuItem("Save"); solo.clickInList(0); solo.clearEditText(0); solo.enterText(0, "Text 1"); solo.clickOnMenuItem("Save"); solo.assertCurrentActivity("Expected NotesList Activity", "NotesList"); solo.clickLongOnText("English Title Note"); solo.clickOnText("Delete"); } }