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 - 如何对结果图进行单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何对 ETL 流程进行测试(单元测试)?

如何对私有 Cocoapods 库进行单元测试?

如何对强制展开进行单元测试

如何在C#中对单元测试性能优化进行单元测试?

如何写出有效的单元测试

单元测试2