
在一个真实的 SAP S/4HANA 开发项目里,CDS View Entity 很少只是简单地把数据库表字段原样暴露出来。一个稍微有业务价值的 CDS 数据模型,往往已经包含了 association、计算字段、CASE 表达式、聚合、过滤条件、货币和数量语义,甚至继续调用 CDS Table Function,把部分复杂的数据处理逻辑下推到 SAP HANA。代码写完以后,真正麻烦的问题才出现。我们怎样证明这个 CDS 的计算逻辑是对的。更重要的是,我们怎样证明它在半年以后仍然是对的。如果测试必须依赖开发系统里碰巧存在的销售订单、物料、Business Partner 或财务凭证,那么这种测试很难称为真正的单元测试。今天数据库里有数据时测试通过,明天测试客户端被刷新以后失败。某张基础表里新增一条记录,又可能让聚合结果发生变化。测试结果开始依赖系统环境,而不是依赖我们为测试场景明确定义的输入。SAP 为这个问题准备的并不是一个单独工具,而是一整套彼此配合的测试技术。ABAP Unit 负责建立测试执行模型和断言机制。ABAP Development Tools,也就是通常所说的 ADT,负责开发、启动和分析这些测试。CDS Test Double Framework 负责隔离 CDS 数据模型依赖的数据库对象。当 CDS 背后的实现进入 SAP HANA SQLScript 世界,例如 CDS Table Function 或 CDS Scalar Function 使用 AMDP 方法实现时,AMDP Test Double Framework 又接管依赖隔离工作。把这几个东西串起来以后