Play框架功能测试 (functional test in play framework)
来源:互联网 发布:开网店买什么软件好 编辑:程序博客网 时间:2024/04/28 14:27
Play框架中已经集成了junit框架,大家可以非常方便的进行功能测试,这里我展现一个测试新增的例子,其他的大家可以照这个例子深入。 首先需要在app/modules包中定义一个Beat类,app/controllers中定义一个控制器Beats,同时需要定义个被测试的方法,并在conf/routes配置该方法的url地址,分别如下: app/modules/Beat.java:
package models;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;import play.db.jpa.GenericModel;@Entity@Table(name = "beat")public class Beat extends GenericModel {@Idpublic Long id;public String words;public Long count;public Long attime;}
app/controllers/Beats.java:
package controllers;import play.db.jpa.JPABase;import play.mvc.Controller;import models.Beat;public class Beats extends Controller{public static void add(Beat beat){boolean result = beat.create();renderText(result);}}
conf/routes片段:
POST /beat Beats.add
Play中用yaml格式文件作为测试的数据存储。也提供了相应的解析方法。这里我们将测试的数据分成两部分,一部分用作模拟数据库数据,程序启动的时候,会将这部分数据加载到内存数据库中。另一部作为请求的数据,每次请求的时候会用到。对应的会有两个yaml文件,test/yml/db/beat.yml 和 test/yml/request/beats.yml。 test/yml/db/beat.yml:
Beat(b1): id: 1001 words: this is a happay word count: 0 Beat(b2): id: 1002 words: preo jobs count: 2
test/yml/request/beats.yml:
add_normal: beat.id: '1003' beat.words: third feel is unok beat.count: '0'
这样我们就可以进行功能测试,功能测试类必须继承FunctionalTest,继承之后就可以使用play给我们预置的各种assert方法,还有junit的注解标签。如:test/function/BeatsTest.java。内容:
package function;import java.util.Map;import models.Beat;import org.junit.Before;import org.junit.Test;import play.db.jpa.JPA;import play.mvc.Http.Response;import play.test.Fixtures;import play.test.FunctionalTest;public class BeatsTest extends FunctionalTest{Map allRequstMap =null;@Beforepublic void init(){allRequstMap = (Map)Fixtures.loadYamlAsMap("yml/request/beats.yml"); if(!JPA.em().getTransaction().isActive()){ JPA.em().getTransaction().begin(); } Fixtures.delete(Beat.class); Fixtures.loadModels("yml/db/beat.yml"); JPA.em().getTransaction().commit();}@Testpublic void testAdd(){int beforeRequestSize = Beat.findAll().size();Map map = allRequstMap.get("add_normal");Response response = POST("/beat", map);assertIsOk(response);int afterRequestSize = Beat.findAll().size();assertEquals(beforeRequestSize, afterRequestSize - 1);Beat beat = Beat.findById(Long.parseLong(map.get("beat.id")));assertNotNull(beat);String result = response.out.toString();assertFalse("null".equals(result));assertEquals("true", result);} }
每次执行@Test方法时,都要先执行init,在init方法中,Fixtures加载解析yaml文件。分别将两个yml文件放入map与内存数据库中。 在testAdd中,使用了FunctionalTest预置的POST发起请求,当然还有其他如PUT/GET/DELETE方法,FunctionalTest也预置的许多assert方法,方便大家的使用,大家可以自己查看API或者源码。
- Play框架功能测试 (functional test in play framework)
- Play框架功能测试 (functional test in play framework)
- play framework学习笔记之测试test
- Play Framework 框架初识
- Play Framework Cookbook (play框架食谱...)
- Play Framework Cookbook (play框架食谱...)2
- Play Framework Cookbook (play框架食谱...)3
- Play 1.x框架学习之四:定时作业调度 (job scheduler In play framework)
- play framework开发框架尝试
- Play framework框架运行环境
- Play framework框架(一)
- play framework框架(二)
- play framework框架各种render
- play framework 框架事务分割
- Play Framework 错误信息显示 (error message display In play framework)
- play Framework play json
- play framework
- play framework
- maven-mybatis分页插件配置
- js如何打印object对象
- java构造函数使用方法总结
- 最近几次都遇到了sizeof,但是每次都有一点蒙B的感觉,今天总结一下;
- TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符
- Play框架功能测试 (functional test in play framework)
- C#基础知识之使用字典
- 环境相关的测试
- NSDate_解决本地时间差8小时
- 同是流行MVC框架,比较Strtus2和SpringMVC的区别
- 设计模式之适配器模式
- centos 删除 、安装和配置jdk
- [Oracle]ASP.NET+Oracle连接类conn.cs
- Play Framework 数据库与事务管理