`

Play framework 2.0 -测试

 
阅读更多

#测试应用程序

 

测试资源文件必须放在应用的test目录下。你可以通过play控制台使用test和test-only来执行测试任务。

 

1.使用JUnit

 

Play2.0默认使用JUnit进行测试。

package test;

	import org.junit.*;

	import play.mvc.*;
	import play.test.*;
	import play.libs.F.*;

	import static play.test.Helpers.*;
	import static org.fest.assertions.Assertions.*;

	public class SimpleTest {

	    @Test 
	    public void simpleCheck() {
		int a = 1 + 1;
		assertThat(a).isEqualTo(2);
	    }
	    ...
 

 

2.在伪应用程序中运行

 

如果你需要测试的代码依赖一个运行中的程序,你可以在fly上轻松的创建一个FakeApplication。

@Test
	public void findById() {
	    running(fakeApplication(), new Runnable() {
	       public void run() {
		   Computer macintosh = Computer.find.byId(21l);
		   assertThat(macintosh.name).isEqualTo("Macintosh");
		   assertThat(formatted(macintosh.introduced)).isEqualTo("1984-01-24");
	       }
	    });
	}

 

你也快传递(或重写)另外的应用程序配置,或者mock任何插件。例如使用默认的内存数据库创建一个FakeApplication。

fakeApplication(inMemoryDatabase())
 

 

#编写功能测试

 

1.测试模板

 

因为模板是个标准的Scala函数,你可以在test中执行它并检查结果。

@Test
	public void renderTemplate() {
	    Content html = views.html.index.render("Coco");
	    assertThat(contentType(html)).isEqualTo("text/html");
	    assertThat(contentAsString(html)).contains("Coco");
	}
 

 

2.测试你的Controllers

 

通过检索路由,你可以得到一个action的引用,如controllers.routes.ref.Application.index。然后你可以调用它:

@Test
	public void callIndex() {
	    Result result = callAction(controllers.routes.ref.Application.index("Kiki"));   
	    assertThat(status(result)).isEqualTo(OK);
	    assertThat(contentType(result)).isEqualTo("text/html");
	    assertThat(charset(result)).isEqualTo("utf-8");
	    assertThat(contentAsString(result)).contains("Hello Kiki");
	}
 

 

3.测试路由

 

不同于自己调用action,你可以让路由这么做:

@Test
	public void badRoute() {
	    Result result = routeAndCall(fakeRequest(GET, "/xx/Kiki"));
	    assertThat(result).isNull();
	}
 

 

4.启动真的Http服务器

 

有时候你想测试真的Http栈模型。那么你可以启动一个测试服务器:

@Test
	public void testInServer() {
	  running(testServer(3333), new Callback0() {
	      public void invoke() {
		 assertThat(
		   WS.url("http://localhost:3333").get().get().status
		 ).isEqualTo(OK);
	      }
	  });
	}
 

 

4.在web浏览器中测试

 

如果你想在web浏览器中测试你的应用,你可以使用selenum WebDriver。Play会为你启动WebDriver,并且

用FluentLenium提供的简便API包装它。

@Test
	public void runInBrowser() {
	    running(testServer(3333), HTMLUNIT, new Callback<TestBrowser>() {
		public void invoke(TestBrowser browser) {
		   browser.goTo("http://localhost:3333"); 
		   assertThat(browser.$("#title").getTexts().get(0)).isEqualTo("Hello Guest");
		   browser.$("a").click();
		   assertThat(browser.url()).isEqualTo("http://localhost:3333/Coco");
		   assertThat(browser.$("#title", 0).getText()).isEqualTo("Hello Coco");
		}
	    });
	}
 
分享到:
评论

相关推荐

    Play framework 2.0 -第一个应用程序

    《Play Framework 2.0 - 创建你的第一个应用程序》 Play Framework 2.0 是一个开源的Web应用框架,它基于Scala和Java语言,遵循“模式-动作”(Action)架构,提供了一种轻量级、敏捷开发的方式。本篇文章将引导你...

    Play framework 2.0入门教程(三)的源代码,Play留言板

    Play Framework 2.0 是一个基于Java和Scala的开源Web应用程序框架,以其“写后即运行”的特性而闻名。这个入门教程的第三部分是关于如何使用Play Framework构建一个简单的留言板应用。在这里,我们将深入探讨Play ...

    Play-2.0-Scala-MongoDb-Salat-exemple:这是一个来自官方网站的小型待办事项应用程序,但支持 mongodb 而不是 anorm

    更新播放 2.4.0添加测试规范Playframework 2.2.1 (Scala) 和 MongoDb (Salat) 的第一步使用 MongoDb 而不是 Anorm 的待办事项应用程序我们将为 MongoDb 使用 Salat 库( )。 Play 2 有一个替代的“mongo-jackson-...

    play2.0 for java developers.pdf

    ### Play2.0 for Java Developers #### 概述 Play2.0是一个现代的Web应用框架,它基于Java和Scala语言构建,旨在提供简洁、快速且可扩展的应用开发体验。对于Java开发者而言,Play2.0提供了一套完整的Java API,...

    play框架手册

    框架id(framework ID) - 141 - 从命令行设置框架id - 142 - 22.生产部署 - 142 - application.conf - 142 - 设置框架为prod模式: - 142 - 定义一个真实的数据库: - 143 - 禁止JPA的自动结构更新: - 143 - 定义一...

    play2-riak:用于播放框架 2.0 的 riak 2

    Play Framework 是一个用 Java 和 Scala 开发的现代、敏捷的 web 应用程序框架,它提供了快速开发、测试和部署应用的能力。将 Riak 与 Play Framework 结合使用,可以充分利用 Riak 的分布式特性和 Play 的灵活性,...

    play-scala-isolated-slick-example:示例Play Slick项目

    6. "playframework" - 这是项目的核心框架,是一个灵活的Web开发框架,使用Scala和Java构建服务器端应用。 7. "WebappScala" - 明确指出该Web应用程序是使用Scala语言编写的。 【压缩包子文件的文件名称列表】:...

    play2-openshift-quickstart:适用于 OpenShift 的 Play Framework 2 快速入门

    这个 git 存储库将帮助您在 OpenShift Express 上利用自己动手做的墨盒快速启动和运行 Play Framework 2(在 2.0.x、2.1.x、2.2.x、2.3.x 上测试)应用程序。 注意:自 2.3.x 起play命令行实用程序已替换为...

    play-authenticate:用于Play Framework 2.x(Java)的身份验证插件

    PlayAuthenticate-Play的可扩展身份验证插件! 框架2(Java) 想要的维护者!!! 如果您想帮忙,请给我留言! 这个插件使用从概念和并... 适用于Play版本2.0.2至2.0.x (最后: 0.2.3-SNAPSHOT - ) 2.1.0至2.1.x

    playframework:播放框架

    Play Framework兼具生产力和性能,可轻松使用Java和Scala构建可扩展的Web应用程序。 Play具有“按点击刷新”工作流程和内置测试支持,对开发人员友好。 使用Play,由于无状态且无阻塞的体系结构,因此应用程序可以...

    play-scala-service-example:带有Macwire端点Akka类型的播放服务

    2. **Play Framework**: Play是基于Java和Scala的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,支持异步I/O和热加载,适合开发RESTful API。Play与Scala的集成使得开发者可以利用Scala的强大功能来...

    struts2.0配置

    Struts2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序...随着技术的发展,虽然现在有许多其他框架如Spring MVC和Play Framework等,但Struts2.0的历史地位和其对Java Web开发的贡献不容忽视。

    org.apache.servicemix.bundles.spring-test-3.2.8.RELEASE_2.zip

    描述中的"stackable-controller.zip, Play2.x的可堆叠控制器可压缩动作组合框架"提到了一个与Play Framework相关的概念。Play Framework是一个开源的Web应用框架,使用Scala和Java编写,基于Akka actor模型并遵循MVC...

    2015-Framework:2015年框架

    4. **Play Framework**: Play是一款现代、轻量级的Java web框架,强调开发速度和简洁的代码。2015年的Play Framework 2.x版本支持异步I/O,适用于构建高性能的Web应用。 5. **Java EE 7**: Java企业版(Java EE)在...

    eventsource-clock

    这个项目来源于Play 2.0框架,并已尝试移植到最新版本,但不推荐用于生产环境,目前正处于持续改进阶段。 事件源(EventSource)是HTML5引入的一个新特性,通过`EventSource`接口,浏览器可以建立一个持久连接到...

    specs2-markdown_2.11.0-RC1-2.3.10.zip

    它可以与其他 Scala 库如 Play Framework 结合,用于 web 应用的测试。 2. **Markdown**:一种简单的文本格式,常用于编写文档,支持标题、列表、链接等基本元素,易于阅读和转换成 HTML、PDF 等格式。在 specs2 中...

    swagger-core,用于生成swagger api规范的示例和服务器集成,该规范允许轻松访问restapi.zip

    2. **服务器端集成**:它能够与多种服务器框架集成,如 Jersey、Spring MVC 和 Play Framework,帮助开发者快速构建符合 Swagger 规范的 REST 服务。 3. **文档生成**:通过解析源代码,Swagger Core 可以自动生成...

    Sonic:OpenId Connect位

    Play Framework是一个用Java和Scala构建现代Web应用的开源框架,它强调代码的简洁性和可测试性,提供了一种快速开发高性能Web应用的方式。 **Play Framework 2.3.9** Play Framework 2.3.x系列是该框架的一个稳定...

    swagger-core-2.1.13.tar.gz

    5. **集成**: Swagger Core支持多种Web开发框架,如Java的Spring MVC、Play Framework,甚至Node.js和Ruby on Rails。这样,无论你使用哪种技术栈,都可以轻松地将Swagger集成到你的项目中。 6. **测试**: Swagger ...

    shaun-master.zip

    Pac4J 是一个轻量级、可扩展的安全库,适用于多种 web 框架,如 Spring Security 和 Play Framework。JWT(JSON Web Token)则是一种安全地在各方之间传输信息的开放标准,常用于身份验证和授权。 在这个压缩包中,...

Global site tag (gtag.js) - Google Analytics