博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TestCase NotePad3.0 of robotium
阅读量:5238 次
发布时间:2019-06-14

本文共 4384 字,大约阅读时间需要 14 分钟。

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

   public class EditorTest extends                  ActivityInstrumentationTestCase2
{
      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)

长时间按住所选的文字

 

转载于:https://www.cnblogs.com/ccxniit2004/archive/2012/01/08/2316618.html

你可能感兴趣的文章
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
Android控件之GridView探究
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
snmpwalk命令常用方法总结
查看>>
网站产品设计
查看>>
C++按格式接收输入字符(京东,滴滴,360笔试必用)
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Java IO流学习总结
查看>>