在很多企业的 ABAP 项目里,写 ABAP Unit 并不是技术不会,而是代码本身不配合:方法里既读数据库,又弹 SAP GUI 界面,还顺手调用一两个 RFC 或者 Gateway 的运行时对象。你想把测试跑在后台任务里,它却硬要你点屏幕;你想让测试可重复,它却依赖生产表里某天刚被人改过的记录。更尴尬的是,管理层突然盯上测试覆盖率,让你在不大改架构的前提下把覆盖率拉起来——这就是现实世界里最常见的压力锅场景。
理想状态下,我们当然推崇职责分离、依赖倒置、接口隔离:把外部依赖抽象成接口,在测试里注入替身对象,让生产代码天然可测。但现实里,老系统往往从没听过这些概念:代码像一锅炖,屏幕、数据库、权限检查、提交事务全在一个方法里。这个时候,完全重构不现实,只能找一种更像外科手术的办法:在尽量少改业务逻辑的前提下,把难测的依赖替换掉。
ABAP 7.50 引入的 Test Seams 与 Test Injections,就是这把手术刀。
为什么老代码让 ABAP Unit 这么难受
自动化单元测试追求三件事:可重复、可隔离、可快速。而老代码常见的依赖恰好逐个击穿这三点:
- 依赖 UI:比如
CALL SCREEN、POPUP、cl_demo_input=>request这类交互在单元测试环境里通常不可用,测试跑着跑着就卡住等输入。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



