Junit:测试查询类

时间:2013-07-24 07:11:58

标签: mysql testing junit

我需要用JUnit编写一些测试来测试访问数据库的类,有些非常简单(选择项目列表)其他人插入新项目,你知道基本的SQL东西。

现在我的问题是,在编写测试时我需要记住哪些事情?

例如: 数据库类从表中获取项目,我可以使用有效的ID,无效的ID来测试它,但还有什么呢?

总而言之:如何最好地测试查询类?

自从我写了任何测试以来,我已经有一段时间了,所以我有点生气:)

1 个答案:

答案 0 :(得分:2)

如果您只是测试SQL查询,则可以

  • 在成功案例中运行每个查询以检查您是否拥有正确的陈述
  • (如您所述)选择无效的ID
  • 插入重复记录(通过PK或唯一密钥)
  • 确保您不能在非可空字段中放置空值。
  • 删除无效的ID(如果失败?或者只是忽略该行不存在?)
  • 验证您对列的任何检查
  • 也许您必须进行任何验证才能阻止将String存储在较短的varchar列中?

我从来没有做过超过查询的第一个要点,但我可以看到测试一些额外场景的一些价值。

这种类型的集成测试的一个好习惯是能够为每个测试删除DB所需的任何数据,因为这将保证每个测试都是隔离的。如果您使用的是Java,则可以使用DBUnit之类的框架来执行此操作。 另一个好的做法是擦除数据库并创建测试数据之前运行每个测试而不是之后。这样做的好处是,如果测试失败,那么当测试失败时,您将使DB处于该状态。

您可以测试的其他内容是您在DAO级别执行的任何类型的数据转换(例如,带有逗号分隔值列表的varchar列,您将其转换为List,而不是将其保留为字符串)。