Junit:测试查询类

dar*_*age 5 mysql testing junit

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

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

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

因此,总结一下:您如何最好地测试查询类?

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

Aug*_*sto 2

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

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

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

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

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