1

我正在使用严重依赖数据库的 Java Play Framework 2.0 开发 Web 应用程序。我想开始为它编写功能测试,它需要访问一个已经包含数据的数据库,但我不希望它接触实际应用程序的数据库,我希望在测试之间重置测试数据库. 我如何设置它并为 Play 应用程序访问它?

4

2 回答 2

1

我从未使用过 Java Play,但数据库测试的概念在各种语言中都很常见。从我的角度来看,可以使用三种解决方案

  1. 创建一个单独的数据库,该数据库不在生产环境中,并让您的测试针对该数据库运行。专业人士肯定是,您正在根据真实数据测试您的代码。缺点是偶尔导入新数据并跟踪架构更改

  2. 您可以导入一个只有结构和一些预定义数字的干净数据库,这些数据库将在每个测试套件/案例之前重置

  3. 最可取的方法是使用 Mockup 对象。这仅在您使用 ORM 框架的假设下有效,以便您可以封装。

一些进一步研究的链接

http://mockrunner.sourceforge.net(jdbc 支持模拟)

http://code.google.com/p/mockito/(用于一般模拟)

于 2012-11-18T15:14:41.873 回答
0

如果数据库不必是 MySQL,那么我建议使用像H2这样的内存数据库。它非常适合测试目的,并且启动速度非常快。此外,使用内存数据库,您不必担心清理测试副作用(每个测试的新数据库)。这还有一个优点,即测试是自包含的,其他人测试您的代码(甚至是构建/自动化服务器)也不需要安装 MySQL。

如果您必须使用 MySQL 作为数据库,那么可以编写 @Before/@After 钩子脚本来设置您的架构并初始化您需要的任何数据,但如果可以避免,我建议使用内存路由。

于 2012-11-18T15:15:13.183 回答