5

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

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

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

所以,总结一下:你如何最好地测试你的查询类?

我已经有一段时间没有写任何测试了,所以我有点生疏了:)

4

1 回答 1

2

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

  • 在成功的场景中运行每个查询以检查您是否有正确的语句
  • (如您所述)选择无效的ID
  • 插入重复记录(通过 PK 或唯一键)
  • 确保您不能在不可为空的字段中放置空值。
  • 删除无效的ID(它应该失败吗?或者只是忽略该行不存在?)
  • 验证您对列的所有检查
  • 也许您必须进行任何验证以防止将 aString存储在较短的varchar列中?

除了查询的第一个要点之外,我从来没有做过更多的事情,但我可以看到测试一些额外场景的一些价值。

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

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

于 2013-07-24T07:27:02.350 回答