如何对SQL查询进行unit testing?

我有一个类DBHandler ,它接受一个查询,通过SQL服务器运行它,检查错误并返回结果。 我怎样才能对这门课进行unit testing?

编辑 :我会尝试更精确: DBHandler负责将查询传递给服务器。 为了测试它实际上是这样,抛出正确的exception等,我想将它连接到我将填充的模拟数据库。 我的问题是 – 怎么做? 如何创建处理调用的模拟“服务器”?

只需传递一个SQL查询,并将返回的结果与预期结果进行比较。 简单。 JUnit是一个unit testing框架,你可以利用它。

对于复杂的数据库unit testing,请查看DBUnit 。

我使用dependency injection来传递数据库连接或类似的东西,这样整个事情就可以在测试中被模拟出来。 然后,您可以编写测试,其中模拟查询抛出exception,返回各种错误或有效结果。 然后你的测试只是检查DBHandler是否正确执行。

您将要么使用您创建的内存测试数据库并在设置时填充,要么使所有测试都是事务性的,这样它们就不会改变您的测试数据库。

您将不得不担心数据的存在。

如果您使用的是Spring,他们会支持事务unit testing。

目前尚不清楚你在问什么。 您已经了解JUnit。 你觉得你错过了什么?

模拟数据库的快速解决方案是这样的:

  • 设置独立于您的应用程序的HSQLDB测试服务器。

  • 填充测试数据。

  • 使用条件代码连接到真实数据库,连接到测试服务器。 应用程序中的属性可以控制此属性。

  • 测试应用程序