2

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

例如,在 Rails 世界中,可能有一个 cucumber step GIVEN there are 10 users who like chocolate,它在后台将使用 FactoryGirl 或类似的库在数据库中生成这些模型;然后,您可以指望在测试运行之间自动清空测试数据库,并且测试在与实际应用程序不同的数据库实例中运行。

在使用 Play 2.0 的 Scala 世界中,我们正在考虑在 MySQL 上使用 Anorm。我们是否应该对我们的测试进行特殊处理以使用内存数据库(注意清除它),并编写代码来简单地在 GIVEN 块中创建和持久化案例类?

同样,Play“进化”是否会自动运行以在测试内存数据库中生成生产模式?

感谢您帮助避免在这里重新发明轮子。

4

1 回答 1

2

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

  • 为模型使用带有案例类的 ScalaQuery 0.10.0-M1
  • FakeApplication与内存数据库一起用于单元和功能测试
  • 使用真实的本地 MySQL 数据库进行集成和端到端测试
  • 正如在这个问题中提出的那样,我们正在为每个 GIVEN 保留模型
    • 对于单元测试和功能测试,使用H2内存数据库,每个测试都有一个新的DB,非常好,速度快,与其他测试隔离,不需要清理
    • 对于集成和端到端测试,使用本地 MySQL 数据库,测试共享一个数据库。我们目前对每个 GIVEN 使用随机数据,以便测试不会相互影响,并定期清除我们的本地数据库

到目前为止,这个过程对我们来说效果很好,有一些问题是其他 StackOverflow 问题的主题(待办事项:链接到这些问题在这里

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

于 2012-07-02T14:28:47.850 回答