【问题标题】:How to organize data environment for JUnit tests?如何为 JUnit 测试组织数据环境?
【发布时间】:2011-04-06 16:24:07
【问题描述】:

我正在创建一个数据密集型 Java EE Web 应用程序,它将其持久数据保存在关系数据库中。现在我想要一些 JUnit 测试来验证某些“数据环境”中的应用程序行为。一些对象应该在测试之前创建并在测试完成时销毁。测试应该能够控制它们的数据设置配置。典型的情况,嗯?现在我的问题是:

  • 使用什么工具呢? DBUnit 看起来很老,而且不是面向 JUnit-4 的。
  • 在哪里放置以及如何命名对象创建者?
  • 如何将配置详细信息传递给他们? Java调用参数? XML 配置?
  • 为了方便,我不应该使用ExternalResource JUnit 规则吗?

我很想知道最佳做法是什么。你如何解决这个问题?

【问题讨论】:

  • 我投票结束这个。 “最佳实践”问题并不总是很糟糕,但这非常广泛,而且您在一篇文章中提出了多个问题。
  • “DBUnit 看起来相当老旧,而且不是面向 JUnit-4” 我将 DBUnit 与 JUnit 4 一起使用,并且问题为零 - 你指的是什么?
  • @Lord 确切地说,我的帖子中有很多广泛的问题,但我期待一个简短的答案,它将为我指明正确的方向
  • @matt 特别指出:...extends DBTestCase。扩展测试用例类是来自 junit-3 的技术。
  • 您无需扩展 DBTestCase 即可使用 DBUnit;看起来这纯粹是为了方便。您可以在 @Before 方法中自行配置数据集。

标签: java junit dbunit


【解决方案1】:

DBUnit 比较老旧,自 2009 年以来这个项目没有更多的创新。主要问题是数据集大量使用 XML。创建数据集很困难但可行。维护是一场噩梦,有时太贵了......

如果您使用带有 ORM 框架的实体,您应该尝试直接使用它们来实例化您的数据库。为此我推荐 Unitils,它有助于配置测试数据库并提供 JPA 或 Hibernate Session 的注入。您可以将此方法与 Builder Pattern 结合起来,以表达数据的含义并集中配置。

【讨论】:

  • 另外 Unitils 有一个 dbunit 子项目需要维护。
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多