Grails自动化测试
2016-02-17 18:00
363 查看
自动化测试是进行敏捷开发的重要前提,那Grails对自动化测试框架进行了很好的集成。首先Grails创建的项目默认将自动化测试程序(test case)放到test文件夹中,而test文件夹又包含了unit和integration两个子文件夹。这两个的区别在于:
a:integration文件夹中的test case在运行时需要Grails框架的参与,通常用于数据库的查询与更新测试;
b:unit文件夹中的通常用于对普通Java对象、Groovy对象进行测试。
Grials中使用grails test-app命令可以执行测试用例。如果不特殊指定,则会对全部的测试用例进行测试。
下图为指定需执行的测试类方法(测试类名称为UserControllerTest)
测试用例是在test环境下进行的,运行每一个测试用例之前都会先清空测试环境的数据库。这里需要提示的是,DataSource的配置,一共有三种环境,development、test、production,所以测试数据库等信息的配置需要在test中进行设置。
举例测试BreakController中的showPage方法和getList方法
Controller向GSP传递数据有两种方式,一种是使用action的返回值,这时返回值将传递给同名GSP页面;另外一种就是使用render方法,通过view指定GSP页面,通过model指定要传递的数据,类似ajax。
写在最后:
使用Grails同样可以对Service、Domain和Taglib进行测试。也可以得出关于覆盖率等信息的报告,进而实现测试驱动的开发,有利于我们养成良好的开发习惯。
a:integration文件夹中的test case在运行时需要Grails框架的参与,通常用于数据库的查询与更新测试;
b:unit文件夹中的通常用于对普通Java对象、Groovy对象进行测试。
1、Grials自动化测试基础知识
在使用Grails的命令创建Domain和Controller的时候,Grails会自动创建相应的test case。在test case中可以编写多个名为TEST×××的方法,每一个TEST×××方法都相当于一个测试点,都会被Junit测试框架调用并执行测试。最后通过断言方法,可以对程序的运行结果进行验证,从而实现自动化测试。Grials中使用grails test-app命令可以执行测试用例。如果不特殊指定,则会对全部的测试用例进行测试。
下图为指定需执行的测试类方法(测试类名称为UserControllerTest)
测试用例是在test环境下进行的,运行每一个测试用例之前都会先清空测试环境的数据库。这里需要提示的是,DataSource的配置,一共有三种环境,development、test、production,所以测试数据库等信息的配置需要在test中进行设置。
2、编写Controller测试用例
在Grails中,对Controller进行测试,并不是在模拟浏览器的请求,而是通过创建模拟对象,使得Controller运行在某个特定的环境参数下,例如特定的URL参数、表单餐食或者Session等,然后再验证Controller执行后对环境产生的输出。这里的输出就包括跳转、对Session的修改或者返回给GSP的model等等。举例测试BreakController中的showPage方法和getList方法
... // 省略测试类的包名和其他需要import的文件 // 首先需要import待测试的controller import com.byx.study.repo.BreakController /** * BreakController Test 拆分相关测试 * @author LiDan */ class BreakControllerTest{ // 初始化controller中引用的Service,由Spring容器注入springSecurityServvice def springSecurityService // 这里先定义一个变量,下文中将new的controller赋值给它 def b // setUp方法,写一些初始化的代码 @Before public void setUp(){ // 该项目中调用springSecurity校验用户是否登录 assertFalse springSecurityService.loggedIn // 模拟用户登录 SpringSecurityUtils.reauthenticate "moni001", null assertTrue springSecurityService.loggedIn // new controller b = new BreakUpTestController() } @After public void tearDown(){ SecurityContextHolder.clearContext() } // 测试showPage页面,action需要返回值 @Test public void testShowPage(){ assertTrue springSecurityService.loggedIn def result = b.breakUpTest() assert result.schoolNo } // 测试getList方法 @Test public void testGetList(){ assertTrue springSecurityService.loggedIn // 修改controller实例的params属性的值,用来模拟通过ajax向controller提交数据 b.params.rows = 10 b.params.page = 1 b.getTestListAjax() assert breakUpTestController.response.json.total } }
Controller向GSP传递数据有两种方式,一种是使用action的返回值,这时返回值将传递给同名GSP页面;另外一种就是使用render方法,通过view指定GSP页面,通过model指定要传递的数据,类似ajax。
写在最后:
使用Grails同样可以对Service、Domain和Taglib进行测试。也可以得出关于覆盖率等信息的报告,进而实现测试驱动的开发,有利于我们养成良好的开发习惯。
相关文章推荐
- 关于团队敏捷开发实践的 6 个常见问题
- 实现android应用程序自动化测试的批处理脚本
- Android 自动化测试经验分享 深入UiScrollable
- grails不能运行fork模式解决方法
- IOS UI Automation 学习之常用类,方法和模拟手势
- grails2.0M1 run-app遇到的问题.未解决..
- ranorex自动化测试框架开发之路系列博文
- UI自动化测试框架之Selenium关键字驱动
- 国内首部聚焦可伸缩敏捷开发的大师译著---《可伸缩敏捷开发:企业级最佳实践》
- watir学习总结(一)
- 关于自动化测试(未完)
- 你的组织为自动化测试做好准备了吗?
- 明星软件工程师的10种特质
- 利用Jscrīpt进行简单的GUI自动化测试
- 敏捷开发中的7种测试类型
- 软件测试策略
- 《QTP自动化测试进阶》(1)
- 《QTP自动化测试进阶》(2)
- 《QTP自动化测试进阶》(3)
- 《QTP自动化测试进阶》(4)