【问题标题】:Integration tests with Play Framework, without use of fixtures使用 Play 框架进行集成测试,不使用固定装置
【发布时间】:2012-03-17 10:13:59
【问题描述】:

我正在尝试在一个新项目上设置自动化集成测试。使用的堆栈是:
玩!框架
SOAP 网络服务
关系型数据库

由于我想编写集成测试,我需要管理我的数据库中的数据,这通常通过集成在 play framework 中的 Fixtures 来完成。但由于我不使用 Play 框架的模型,所以这是不可能的。
另外,如果你有关于测试数据集维护的小技巧?

此外,如果我正在对我的所有堆栈进行集成测试,我应该(理想情况下)在 Play 项目之外进行它们,那么我将失去 play 测试工具的好处。我应该将它们保留在 Play 项目中吗?

如果我为这些测试创建一个新项目,您对使用的工具有什么建议吗:selenium、htmlunit、...

提前感谢您的帮助!

【问题讨论】:

    标签: playframework integration-testing


    【解决方案1】:

    测试是软件生命周期中非常重要的一部分,但它总是被低估或忽视。在一般情况下,建议单元测试不应该依赖任何数据或数据库,但是集成测试有点不同,并且大多需要足够的数据集。

    理想的集成测试应该有一个集成服务器,该服务器具有适当的数据库和足够的数据。如果您还没有集成服务器,那么 Play Framework 中的固定装置是在测试之前获得适当数据的最简单和最简单的方法。

    在 Play Framework 中有三种类型的测试。单元和功能测试是 JUnit 测试,Selenium 测试也称为验收测试。所有这些概念实际上都在 Play Frameworks 核心模型之外,除了一些非常方便的食谱。所以,老实说,我无法理解使用这种结构的担忧。例如,您可以使用 Selenium 原生语法或使用 #{selenium /} 标签。

    夹具也非常方便,如果您有效地使用它们,它们会非常有用。我的意思是你可以分割你的数据,即 users.yml、products.yml 等,并独立加载删除它们,这为你的测试提供了灵活性。

    到目前为止,如果您不相信使用固定装置,则可以考虑使用模拟数据,但我不喜欢在集成测试中使用模拟数据。这是一个模拟测试数据的示例,它在 Play 框架之外;)

    Mockito

    说实话,我没有机会玩图书馆,但如果你有时间,似乎值得一试。

    希望这个回答对你有帮助。

    【讨论】:

    • 嗨,谢谢你的回答,但我不确定我是否清楚:我不使用 Fixtures 的原因是因为我无权访问实体!所以我需要一个解决方法,当然是 DBUnit。
    • 如果您无权访问实体,即使在测试中有固定装置,您也可以使用 memdb,这将解决您的问题.. 我希望..
    • 例如,在你的 application.conf 文件中你可以设置这个属性:%test.db.url=jdbc:h2:mem:play;MODE=MYSQL;LOCK_MODE=0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多