如何对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测试服务器。
-
填充测试数据。
-
使用条件代码连接到真实数据库,连接到测试服务器。 应用程序中的属性可以控制此属性。
-
测试应用程序