#测试应用程序
测试资源文件必须放在应用的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 是一个开源的Web应用框架,它基于Scala和Java语言,遵循“模式-动作”(Action)架构,提供了一种轻量级、敏捷开发的方式。本篇文章将引导你...
Play Framework 2.0 是一个基于Java和Scala的开源Web应用程序框架,以其“写后即运行”的特性而闻名。这个入门教程的第三部分是关于如何使用Play Framework构建一个简单的留言板应用。在这里,我们将深入探讨Play ...
更新播放 2.4.0添加测试规范Playframework 2.2.1 (Scala) 和 MongoDb (Salat) 的第一步使用 MongoDb 而不是 Anorm 的待办事项应用程序我们将为 MongoDb 使用 Salat 库( )。 Play 2 有一个替代的“mongo-jackson-...
### Play2.0 for Java Developers #### 概述 Play2.0是一个现代的Web应用框架,它基于Java和Scala语言构建,旨在提供简洁、快速且可扩展的应用开发体验。对于Java开发者而言,Play2.0提供了一套完整的Java API,...
框架id(framework ID) - 141 - 从命令行设置框架id - 142 - 22.生产部署 - 142 - application.conf - 142 - 设置框架为prod模式: - 142 - 定义一个真实的数据库: - 143 - 禁止JPA的自动结构更新: - 143 - 定义一...
Play Framework 是一个用 Java 和 Scala 开发的现代、敏捷的 web 应用程序框架,它提供了快速开发、测试和部署应用的能力。将 Riak 与 Play Framework 结合使用,可以充分利用 Riak 的分布式特性和 Play 的灵活性,...
6. "playframework" - 这是项目的核心框架,是一个灵活的Web开发框架,使用Scala和Java构建服务器端应用。 7. "WebappScala" - 明确指出该Web应用程序是使用Scala语言编写的。 【压缩包子文件的文件名称列表】:...
这个 git 存储库将帮助您在 OpenShift Express 上利用自己动手做的墨盒快速启动和运行 Play Framework 2(在 2.0.x、2.1.x、2.2.x、2.3.x 上测试)应用程序。 注意:自 2.3.x 起play命令行实用程序已替换为...
PlayAuthenticate-Play的可扩展身份验证插件! 框架2(Java) 想要的维护者!!! 如果您想帮忙,请给我留言! 这个插件使用从概念和并... 适用于Play版本2.0.2至2.0.x (最后: 0.2.3-SNAPSHOT - ) 2.1.0至2.1.x
Play Framework兼具生产力和性能,可轻松使用Java和Scala构建可扩展的Web应用程序。 Play具有“按点击刷新”工作流程和内置测试支持,对开发人员友好。 使用Play,由于无状态且无阻塞的体系结构,因此应用程序可以...
2. **Play Framework**: Play是基于Java和Scala的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,支持异步I/O和热加载,适合开发RESTful API。Play与Scala的集成使得开发者可以利用Scala的强大功能来...
Struts2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序...随着技术的发展,虽然现在有许多其他框架如Spring MVC和Play Framework等,但Struts2.0的历史地位和其对Java Web开发的贡献不容忽视。
描述中的"stackable-controller.zip, Play2.x的可堆叠控制器可压缩动作组合框架"提到了一个与Play Framework相关的概念。Play Framework是一个开源的Web应用框架,使用Scala和Java编写,基于Akka actor模型并遵循MVC...
4. **Play Framework**: Play是一款现代、轻量级的Java web框架,强调开发速度和简洁的代码。2015年的Play Framework 2.x版本支持异步I/O,适用于构建高性能的Web应用。 5. **Java EE 7**: Java企业版(Java EE)在...
这个项目来源于Play 2.0框架,并已尝试移植到最新版本,但不推荐用于生产环境,目前正处于持续改进阶段。 事件源(EventSource)是HTML5引入的一个新特性,通过`EventSource`接口,浏览器可以建立一个持久连接到...
它可以与其他 Scala 库如 Play Framework 结合,用于 web 应用的测试。 2. **Markdown**:一种简单的文本格式,常用于编写文档,支持标题、列表、链接等基本元素,易于阅读和转换成 HTML、PDF 等格式。在 specs2 中...
2. **服务器端集成**:它能够与多种服务器框架集成,如 Jersey、Spring MVC 和 Play Framework,帮助开发者快速构建符合 Swagger 规范的 REST 服务。 3. **文档生成**:通过解析源代码,Swagger Core 可以自动生成...
Play Framework是一个用Java和Scala构建现代Web应用的开源框架,它强调代码的简洁性和可测试性,提供了一种快速开发高性能Web应用的方式。 **Play Framework 2.3.9** Play Framework 2.3.x系列是该框架的一个稳定...
5. **集成**: Swagger Core支持多种Web开发框架,如Java的Spring MVC、Play Framework,甚至Node.js和Ruby on Rails。这样,无论你使用哪种技术栈,都可以轻松地将Swagger集成到你的项目中。 6. **测试**: Swagger ...
Pac4J 是一个轻量级、可扩展的安全库,适用于多种 web 框架,如 Spring Security 和 Play Framework。JWT(JSON Web Token)则是一种安全地在各方之间传输信息的开放标准,常用于身份验证和授权。 在这个压缩包中,...