MyBatis - 如何对结果图进行单元测试?
Posted
技术标签:
【中文标题】MyBatis - 如何对结果图进行单元测试?【英文标题】:MyBatis - How to unit test result maps? 【发布时间】:2018-12-06 19:10:19 【问题描述】:mybatis 文档说明:
始终以增量方式构建 ResultMap。单元测试在这里真的很有帮助。如果你试图一次构建一个像上面那样的巨大 resultMap,你很可能会弄错并且很难使用它。从简单开始,一步一步地发展。和单元测试!使用框架的缺点是它们有时有点像黑匣子(开源与否)。确保实现预期行为的最佳选择是编写单元测试。在提交错误时拥有它们也很有帮助。
但是,他们在文档中没有说明如何对 resultMaps 进行单元测试。在他们的 github wiki 上,他们有 a page on unit testing,但它似乎更适合贡献者而不是用户。当我似乎需要构建一个功能齐全的内存数据库来测试映射时,如何按照他们的建议为结果映射编写单元测试?
需要内存数据库听起来更像是集成测试而不是单元测试,如果我的任何查询使用数据库特定的 SQL 语句,如 SQL Server T-SQL 语句,它就无法在不同的内存数据库上正确测试类型。我是不是误会了什么?
【问题讨论】:
【参考方案1】:你的理解是正确的。
wiki 上所谓的unit test
实际上是与内存数据库的集成测试。您可以尝试提供一个模拟的DataSource
,它返回模拟的Connection
,依此类推直到ResultSet
,但这不是很实用。集成测试更适合这里。
我想说的重点不是unit-test
(在这种情况下应该被称为测试)而是增量部分。映射器中的 mybatis 错误消息有时很神秘,因此使用短(类似 TDD)反馈循环有助于处理它。如果您为单个映射器运行测试,您正在处理的编辑运行周期可能会相当短。
【讨论】:
以上是关于MyBatis - 如何对结果图进行单元测试?的主要内容,如果未能解决你的问题,请参考以下文章