zoukankan      html  css  js  c++  java
  • TestCase NotePad3.0 of robotium

    <uses-sdk android:targetSdkVersion="YOUR_VERSION" /> 

    Example of a test case (test case spanning over multiple activities where EditorActivity is the first activity):

      
    public class EditorTest extends 
                   
    ActivityInstrumentationTestCase2<EditorActivity> { 
     
     
    private Solo solo; 
     
     
    public EditorTest() { 
                   
    super("com.test.editor", 
                                   
    EditorActivity.class); 
     
    } 
     
     
    public void setUp() throws Exception { 
            solo
    = new Solo(getInstrumentation(), getActivity()); 
     
    } 
       
     
    public void testPreferenceIsSaved() throws Exception { 
       
                    solo
    .sendKey(Solo.MENU); 
                    solo
    .clickOnText("More"); 
                    solo
    .clickOnText("Preferences"); 
                    solo
    .clickOnText("Edit File Extensions"); 
                   
    Assert.assertTrue(solo.searchText("rtf")); 
                     
                    solo
    .clickOnText("txt"); 
                    solo
    .clearEditText(2); 
                    solo
    .enterText(2, "robotium"); 
                    solo
    .clickOnButton("Save"); 
                    solo
    .goBack(); 
                    solo
    .clickOnText("Edit File Extensions"); 
                   
    Assert.assertTrue(solo.searchText("application/robotium")); 
                     
     
    } 
     
       
    @Override 
       
    public void tearDown() throws Exception { 
            solo
    .finishOpenedActivities(); 
     
    } 
    }
     
     
     
    测试代码讲解: 

    下面我们看看 noteslisttest 里的具体代码,看看它是怎么测试的

     

    // 告知系统我要测试的app是什么

     

    public NotePadTest() {

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

    }

    //打开noteslist 

    public void setUp() throws Exception {

    solo = new Solo(getInstrumentation(), getActivity());

    }

     

    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.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.goBackToActivity("NotesList"); 

    boolean expected = true;

    boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2");

    //Assert that Note 1 & Note 2 are found

    assertEquals("Note 1 and/or Note 2 are not found", expected, actual); 

    这是我们第一个case,主要目的是测试添加文本的功能 

    clickOnMenuItem(String)

    功能是点击Menu按钮,选择文本描述为String的菜单,如我们的例子是"Add note"

    assertCurrentActivity(String message,String name)

    这个是判断当前的activity是否和我预期的一致

    message是描述性的文字

    name是指activity的名字

    关于如何知道activity 名字,我找了半天的文档,目前的方法是得看源码中的 AndroidManifest.xml--Application label--Application Nodes,在那里我们可以看到所有的activity的name

     

    enterText(int index,string text)

    index用来标识写到哪个EditText中。如果当前只打开一个EditText,那index=0

    text:就是我们要写入的内容

     

    goBack() 

    相当于手机上的 返回键(back key)

     

    goBackToActivity(String name)

    返回到指定的activity

     

    searchText(String text)

    在当前的activity中搜索是否含有text的内容 

     

    public void testEditNote() throws Exception {

    // Click on the second list line

    solo.clickInList(2); 

    // 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.goBackToActivity("NotesList");

    boolean expected = true;

    // (Regexp) case insensitive

    boolean actual = solo.searchText("(?i).*?note 1 test"); 

    //Assert that Note 1 test is found

    assertEquals("Note 1 test is found", expected, actual); 

    第二个case,主要是测试编辑功能的

    clickInList(int index)

     点击list表的第index行,进入该文本界面

     solo.setActivityOrientation(Solo.LANDSCAPE);

     setActivityOrientation,设置手机屏幕显示方式

     LANDSCAPE:横向显示

     Portrait:竖向显示 

     

     

     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 not 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 not found", expected, actual);  

    }

     第三个case,是用来测试删除功能的

     clickOnText(String text)

    点击包含该文字的地方

    其中text可以用正则表达式表示

    (?i)----忽略大小写。默认情况是大小写敏感的。

    正则表达式与java保持一致

     

    clickLongOnText(String text)

    长时间按住所选的文字

     

  • 相关阅读:
    java乱码问题解决
    发送邮件工具方法
    MD5加密算法工具类
    2015年4月与5月
    Hark的数据结构与算法练习之煎饼排序
    Hark的数据结构与算法练习之图书馆排序
    Hark的数据结构与算法练习之耐心排序
    Hark的数据结构与算法练习之多路归并排序
    Hark的数据结构与算法练习之若领图排序ProxymapSort
    启动mysql出现了error the server quit without updating pid file (/var/lib/mysql/localhost.localdomain.pid)
  • 原文地址:https://www.cnblogs.com/ccxniit2004/p/2316618.html
Copyright © 2011-2022 走看看