使用Provider机制改造goner/xorm
· 阅读需 20 分钟
缘起
最近在给 goner增加测试代码,提高项目的测试覆盖率。改到goner/xorm
时,发现存在两个主要问题:
1.原来的设计比较复杂
goner/xorm是gone框架中较早提供的组件,其演进历程如下:
-
v1.0版本:完全基于Goner机制实现
-
v1.2版本:引入Provider机制,为支持多数据库和集群场景做了增量改造
目前的情况是Goner机制和Provider机制的实现同时存在:
-
默认配置的数据库:基于Goner机制注入
-
集群数据库或多数据库:使用Provider机制注入
这种双机制并存的设计增加了代码的复杂性和维护难度。
2.测试不够友好,比较难做覆盖。
代码的设计职责不够清晰,组件边界不够分明,导致测试编写困难,难以实现良好的测试覆盖率。