如果大家配置好了Robotium的測試環境,那么開始吧(這里只介紹有源碼的情況,沒有源碼也是可以做的)
被測應用下載:http://download.csdn.net/detail/wirelessqa/4487252
測試代碼 (只貼出MainActivity和GridView,用例很簡單就不多作注釋了)
大家可以對照著Athrun的用例來看看兩個框架的區別
[java] view plaincopypackage org.onceler.robotium.test;
import java.util.ArrayList;
import org.athrun.android.app.MainActivity;
import org.athrun.android.app.R;
import org.athrun.android.app.ScrollActivity;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.Smoke;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.TextView;
import com.jayway.android.robotium.solo.Solo;
public class MainActivityTest extends ActivityInstrumentationTestCase2{
private Solo solo;
private TextView tv;
private static final String TAG = "robotium_test";
public MainActivityTest() {
super("org.athrun.android.app", MainActivity.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
@Override
public void tearDown() throws Exception {
//Robotium will finish all the activities that have been opened
solo.finishOpenedActivities();
}
@Smoke
public void testWaitForActivity(){
solo.assertCurrentActivity("assert activity err", MainActivity.class);
solo.assertCurrentActivity("assert activity err", "MainActivity");
solo.assertCurrentActivity("assert activity err", MainActivity.class, true);
solo.assertCurrentActivity("assert activity err", "MainActivity", true);
solo.clickOnButton("ScrollView");
solo.assertCurrentActivity("assert activity err", ScrollActivity.class);
solo.goBack();
solo.clickOnButton(4);
solo.assertCurrentActivity("assert activity err", "ScrollActivity");
solo.goBackToActivity("MainActivity");
solo.assertCurrentActivity("assert activity err", "MainActivity", true);
}
@Smoke
public void testFindElementInTree(){
ArrayList list = solo.getViews(solo.getView(R.id.include_checkbox));
tv = (TextView)list.get(2);
assertEquals("default text",tv.getText());
solo.clickOnCheckBox(0);
tv = (TextView)list.get(2);
assertEquals("CheckBox is checked!",tv.getText());
}
public void testFindViewByIdDirect() {
//通過ID得到view
tv = (TextView)solo.getView(R.id.textview);
assertEquals("default text",tv.getText());
solo.clickOnCheckBox(0);
tv = (TextView)solo.getView(R.id.textview);
assertEquals("CheckBox is checked!",tv.getText());
}
public void testLongClick(){
//ImageView iv = (ImageView)solo.getView(R.id.my_imageview);
solo.clickLongOnView(solo.getView(R.id.my_imageview));
//這個TOAST提示捕獲不到,不知道哪里有問題,知道的朋友可以跟我說一下
// assertEquals(true,solo.waitForText("LongClick"));
}
public void testPressMenu(){
solo.clickOnMenuItem("Toast");
//這個TOAST跟上面的一樣,這個確是成功的。OH MY GOD,這是為何
assertEquals(true,solo.waitForText("Hello World"));
}
public void testPressHome(){
solo.sendKey(KeyEvent.KEYCODE_HOME);
solo.sleep(2000);
}
public void testPressBack(){
solo.clickOnButton("ScrollView");
solo.clickOnButton("Bottom Button");
solo.sendKey(KeyEvent.KEYCODE_BACK);
solo.assertCurrentActivity("assert activity err", "MainActivity");
}
public void testFindViewByText(){
solo.clickOnButton("ListView");
solo.clickLongOnText("Item35");
solo.clickOnText("Item One");
assertTrue(solo.waitForText("1 pressed!"));
}
public void testScrollListInDialog(){
solo.clickOnMenuItem("Dialog With List");
solo.clickOnText("Item9");
原文轉自:http://www.anti-gravitydesign.com