Andoid2.1--robotium<1>--NotePadTest

/*
 * This is an example test project created in Eclipse to test NotePad which is a sample 
 * project located in AndroidSDK/samples/android-11/NotePad
 * Just click on File --> New --> Project --> Android Project --> Create Project from existing source and
 * select NotePad.
 * 
 * Then you can run these test cases either on the emulator or on device. You right click
 * the test project and select Run As --> Run As Android JUnit Test
 * 
 * @author Renas Reda, renas.reda@jayway.com
 * 
 */

package com.example.android.notepad.test;

import com.example.android.notepad.NotesList;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.Smoke;


public class NotePadTest extends ActivityInstrumentationTestCase2<NotesList>{

    private Solo solo;

    public NotePadTest() {
        super("com.example.android.notepad", NotesList.class);

    }

    public void setUp() throws Exception {
        solo = new Solo(getInstrumentation(), getActivity());
    }


    @Smoke
    public void testAddNote() throws Exception {
        solo.clickOnMenuItem("Add note");
        //Assert that NoteEditor activity is opened
        solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor"); 
        //In text field 0, add Note 1
        solo.enterText(0, "Note 1");
        //solo.clickOnMenuItem("Save");
        solo.goBack(); 
        solo.goBack();
        //Clicks on menu item
        solo.clickOnMenuItem("Add note");
        //In text field 0, add Note 2
        solo.enterText(0, "Note 2");
        //Go back to first activity named "NotesList"
        //solo.clickOnMenuItem("Save");
        solo.goBack(); 
        solo.goBack();
        //Clicks on menu item
        solo.clickOnMenuItem("Add note");
        //In text field 0, add Note 3
        solo.enterText(0, "Note 3");
        solo.goBackToActivity("NotesList"); 
        boolean expected = true;
        boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2")
                && solo.searchText("Note 3");
        //Assert that Note 1 & Note 2 are found
        assertEquals("Note 1 and/or Note 2 are not found", expected, actual); 

    }

    @Smoke 
    public void testEditNote() throws Exception {
        // Click on the second list line
        solo.clickInList(3); 
        // Change orientation of activity
        solo.setActivityOrientation(Solo.LANDSCAPE);
        // Change title
        solo.clickOnMenuItem("Edit title");
        //In first text field (0), add test
        solo.enterText(0, " test");  
        solo.goBack();
        boolean expected = true;
        // (Regexp) case insensitive
        boolean actual = solo.waitForText("(?i).*?note 1 "); 
        //Assert that Note 1 test is found
        assertEquals("Note 1 test is not found", expected, actual); 

    }


    @Smoke
    public void testRemoveNote() throws Exception {
        //(Regexp) case insensitive/text that contains "test"
        solo.clickOnText("(?i).*?test.*");
        //Delete Note 1 test
        solo.clickOnMenuItem("Delete");
        //Note 1 test & Note 2 should not be found
        boolean expected = false;   
        boolean actual = solo.searchText("Note 1 test");
        //Assert that Note 1 test is not found
        assertEquals("Note 1 Test is found", expected, actual);  
        solo.clickLongOnText("Note 2");
        //Clicks on Delete in the context menu
        solo.clickOnText("(?i).*?Delete.*");  
        actual = solo.searchText("Note 2");
        //Assert that Note 2 is not found
        assertEquals("Note 2 is found", expected, actual); 
        solo.clickLongOnText("Note 3");
        //Clicks on Delete in the context menu
        solo.clickOnText("(?i).*?Delete.*");  
        actual = solo.searchText("Note 3");
        //Assert that Note 2 is not found
        assertEquals("Note 3 is found", expected, actual); 
    }

    @Override
    public void tearDown() throws Exception {
        //Robotium will finish all the activities that have been opened
        solo.finishOpenedActivities();
    }
}

1>solo.clickOnMenuItem("Add note");
  //solo.clickOnMenuItem(String text);
  //选择Menu按键,从菜单中选择一个选项text
    
2>solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor");
  // assertCurrentActivity(String message, String name)
  //假设当前的activity为期望的activity
  //参数:message 如果当前的activity不是期望的activity 则输出message
  //name 期望的activity
  

3>solo.enterText(0, "Note 1");
  //enterText(int index, String text)
  // 根据索引 向编辑文本框中输入内容
  //index – EditText的索引, 如果index=0 只有一个可选EditText 
  //text – 输入内容

 4>solo.goBack(); //模拟点击返回键
 

 5>public void goBackToActivity(String name)
  //返回到给定的Activity
  //参数:name 想返回到的Activity
  //boolean expected = true;
  

 6>public boolean searchText(String text)
  //在当前activity中查找 text,界面中只要找到一项与text相同的String,return true.
  //参数: text期望找到的String
  //返回值:找到 return true 找不到 return false
  

7>assertEquals("Note 1 and/or Note 2 are not found", expected, actual);
  // expected 期望结果,actual 实际结果 ;
  //如果expected != actual 输出"Note 1 and/or Note 2 are not found"
 

8> solo.clickInList(2); 
 //clickInList(int line); 点击列表中的一行(line)
 //返回值 ArraryList 返回可编辑的文本界面,并将这一条目移到列表中的第一条
 

 9>solo.setActivityOrientation(Solo.LANDSCAPE);
 //setActivityOrientation,设置手机屏幕显示方式
 //LANDSCAPE:横向显示
 //Portrait:竖向显示  

10> solo.clickOnText("(?i).*?test.*");    
//点击当前activity中的文本  

11>solo.clickLongOnText("Note 2");
 //长按activity中的文本

更多方法请参见Solo的API文档:
http://www.jarvana.com/jarvana/view/com/jayway/android/robotium/robotium-solo/2.0.1/robotium-solo-2.0.1-javadoc.jar!/com/jayway/android/robotium/solo/Solo.html#clickOnText(java.lang.String)

posted on 2012-07-26 16:37  龙沙宝石  阅读(1168)  评论(0编辑  收藏  举报

导航