Scala Play 2.0集成TDD/BDD的数据库模型生成

Scala Play 2.0集成TDD/BDD的数据库模型生成,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我们正在使用Scala中的Play2.0框架进行第一个项目。我们想知道是否有一个(或多个)现有的最佳实践或库用于从集成和端到端测试的“给定”部分生成测试数据 例如,在Rails世界中,如果有10个用户喜欢巧克力,那么可能会有一个cucumber步骤,在后台使用FactoryGirl或类似的库在数据库中生成这些模型;然后,您可以指望在测试运行之间自动清空测试数据库,并且测试运行在与实际应用程序不同的数据库实例中 在使用Play2.0的Scala世界中,我们正在考虑在MySQL上使用Anorm。我们

我们正在使用Scala中的Play2.0框架进行第一个项目。我们想知道是否有一个(或多个)现有的最佳实践或库用于从集成和端到端测试的“给定”部分生成测试数据

例如,在Rails世界中,如果有10个用户喜欢巧克力,那么可能会有一个cucumber步骤
,在后台使用FactoryGirl或类似的库在数据库中生成这些模型;然后,您可以指望在测试运行之间自动清空测试数据库,并且测试运行在与实际应用程序不同的数据库实例中

在使用Play2.0的Scala世界中,我们正在考虑在MySQL上使用Anorm。我们是否应该将我们的测试特殊化为使用内存中的数据库(注意清除它),并编写代码来简单地在给定的块中创建和持久化case类

按照同样的思路,播放“evolutions”会自动运行以在内存测试数据库中生成生产模式吗


感谢您提供帮助,避免在此处重新发明轮子。

自从我提出这个问题以来,我们已经确定了以下工作流程:

  • 对模型使用ScalaQuery 0.10.0-M1 w/Case类
  • FakeApplication
    与内存中的数据库一起用于单元和功能测试
  • 使用真实的本地MySQL数据库进行集成和端到端测试
  • 正如在这个问题中所提出的,我们坚持每个给定的模型
    • 对于单元测试和功能测试,使用内存中的H2数据库,每个测试都有一个新的DB,它非常强大、快速,并且与其他测试隔离,不需要清理
    • 对于集成和端到端测试,使用本地MySQL数据库,测试共享一个DB。我们目前正在为每个给定的测试使用随机数据,以便测试不会相互影响,并定期清理本地数据库
到目前为止,这个过程对我们来说相当有效,有一些问题是其他StackOverflow问题的主题(todo:链接到这些问题)


在回答我上面的问题时:,每次启动内存中的数据库时,都会运行演化过程。

@streetpc是,在下面添加我自己的答案,以获取我们学到的一些知识