MyException - 我的异常网
当前位置:我的异常网» Android » Robotium运用与Android自动化测试的研究

Robotium运用与Android自动化测试的研究

www.MyException.Cn  网友分享于:2013-08-27  浏览:146次
Robotium应用与Android自动化测试的研究


      Android的自动测试研究,我相信有很多在接触android的人当中,也在网上不断的所搜和研究究竟有没有能应用android自动化测试手段,我也是如此,经过一番寻找研究有幸接触到了Robotium这个东东,他能一定程度上给我们一些想要的效果,现将小试牛刀的一些东东分享出来.

     

User scenario testing for Android

Robotium is a test framework created to make it easy to write powerful and robust automatic black-box test cases for Android applications. With the support of Robotium, test case developers can write function, system and acceptance test scenarios, spanning multiple Android activities.

Robotium has full support for Activities, Dialogs, Toasts, Menus and Context Menus.

 

上边的一段英文是官方一段文字,也就是我们利用Robotium可以做一些对android的一些自动化测试工作,并且他是可跨越多个Activites,且容易写一些测试case的,一定程度上能做一些黑盒的自动化工作,在这里先简单跑一个notpad的例子,看看跑起来的效果是什么样的,后续继续做些更详细的。

 

官方地址:http://code.google.com/p/robotium/

 

一、确保环境

1.已经安装eclipse

2.Eclipse已经配置好android相关环境

3.存在已经创建模拟器

 

二、步骤

1.启动Eclipse执行 New --> Project --> Android Project --> Create Project from existing sample --> NotePad将自带的例子导入进来.

2.在官方down栏下下载三个文件,两个是所需要的jar包,另一个是notepad的测试例子

(当前最新的是2.1Featured,这里就不提供下载连接了版本更新的还是比较快的

3.然后执行File --> Import --> Existing Project into workspace --> Select archive file --> ExampleTestProject_v2.1.zip将例子导入进来(如果错误可能需要你在这个项目上将刚才说需要的两个jar导入project --> Properties --> Java Build Path --> Add (external) Jar)

4.右键选择刚才导入的test例子执行Run As --> Run As Android JUnit Test.

如果没有意外的话会自动启动模拟器并且运行起来了.

上一张截图看看样子把



 再睹为快测试的代码:

 

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");
		 solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor"); //Assert that NoteEditor activity is opened
		 solo.enterText(0, "Note 1"); //In text field 0, add Note 1
		 solo.goBack(); //Go back
		 solo.clickOnMenuItem("Add note"); //Clicks on menu item 
		 solo.enterText(0, "Note 2"); //In text field 0, add Note 2
		 solo.goBackToActivity("NotesList"); //Go back to first activity named "NotesList"
		 boolean expected = true;
		 boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2");
		 assertEquals("Note 1 and/or Note 2 are not found", expected, actual); //Assert that Note 1 & Note 2 are found
		
	 }
	
	@Smoke 
	public void testEditNote() throws Exception {
		solo.clickInList(2); // Clicks on the second list line
		solo.setActivityOrientation(Solo.LANDSCAPE); // Change orientation of activity
		solo.clickOnMenuItem("Edit title"); // Change title
		solo.enterText(0, " test"); //In first text field (0), add test. 
		solo.goBackToActivity("NotesList");
		boolean expected = true;
		boolean actual = solo.searchText("(?i).*?note 1 test"); // (Regexp) case insensitive												// insensitive
		assertEquals("Note 1 test is not found", expected, actual); //Assert that Note 1 test is found

	}
	

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

	@Override
	public void tearDown() throws Exception {
		try {
			solo.finalize(); 	//Robotium will finish all the activities that have been open
		} catch (Throwable e) {
			e.printStackTrace();
		}
		getActivity().finish();
		super.tearDown();
	} 

 

1 楼 ljh223 2011-11-22  
顶起!  哈哈   ~~

文章评论

一个程序员的时间管理
一个程序员的时间管理
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员必看的十大电影
程序员必看的十大电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
如何成为一名黑客
如何成为一名黑客
旅行,写作,编程
旅行,写作,编程
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
编程语言是女人
编程语言是女人
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员的鄙视链
程序员的鄙视链
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java程序员必看电影
Java程序员必看电影
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老程序员的下场
老程序员的下场
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
中美印日四国程序员比较
中美印日四国程序员比较
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
那些争议最大的编程观点
那些争议最大的编程观点
10个调试和排错的小建议
10个调试和排错的小建议
漫画:程序员的工作
漫画:程序员的工作
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员和编码员之间的区别
程序员和编码员之间的区别
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
总结2014中国互联网十大段子
总结2014中国互联网十大段子
代码女神横空出世
代码女神横空出世
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我是如何打败拖延症的
我是如何打败拖延症的
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
为什么程序员都是夜猫子
为什么程序员都是夜猫子
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有