You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建含输入输出与说明的单元测试详细日志?

增强ADT与SAP GUI测试报告详细度的可行方案

针对你需要包含输入数据、结果数据及说明的详细测试报告需求,以下是适配ADT和SAP GUI测试场景的解决方案,以及自定义断言类的实现思路:

一、原生测试框架扩展方案

1. ADT(ABAP Development Tools)端的增强

  • 用自带断言API加自定义消息:ABAP的CL_AUNIT_ASSERT类本身支持msg参数,在断言时直接把输入、预期结果、实际结果写进去,成功测试也会显示这些信息:
    cl_aunit_assert=>assert_equals(
      act = lv_result
      exp = lv_expected
      msg = |输入数据:{ lv_input },预期值:{ lv_expected },实际值:{ lv_result } - 计算逻辑验证通过|
    );
    
  • 添加测试方法级日志:在测试类的SETUP或者TEARDOWN里,用CL_AUNIT_TESTRUN_CONTEXT记录测试执行的关键信息,不管成功失败都能留存:
    DATA(lo_context) = cl_aunit_testrun_context=>get_current( ).
    lo_context->add_log_entry(
      iv_type = if_aunit_types=>c_log_type-information
      iv_message = |测试方法 { sy-repid } 执行完成,输入参数:{ lv_input }|
    );
    

2. SAP GUI测试端的增强

  • ECATT脚本加日志:如果用ECATT做GUI测试,直接用LOG语句把输入、结果和说明写进去,测试报告里会自动包含这些内容:
    LOG 'INFO' '创建销售订单:客户编号' lv_customer_id ',订单类型' lv_order_type ',操作成功,生成订单号' lv_order_num.
    
  • SAP GUI Scripting日志输出:用VBScript/JS写GUI脚本时,通过Session.Log记录细节,后续导出报告时可以把这些日志整合进去:
    Session.Log "INFO: 物料编号输入为 " & materialId & ",预期库存 " & expectedStock & ",实际查询结果 " & actualStock & " - 库存验证通过"
    

二、自定义断言类方案(原生方案不够用时)

如果原生扩展满足不了你的精细化需求,完全可以自己写个自定义断言类,实现日志的添加和回收:

  • 核心思路:把断言逻辑和日志记录封装在一起,成功时自动存日志,失败时抛出带详细信息的异常
  • 示例代码框架:
    CLASS zcl_custom_assert DEFINITION PUBLIC FINAL CREATE PUBLIC.
      PUBLIC SECTION.
        CLASS-METHODS assert_equals
          IMPORTING
            !actual TYPE any
            !expected TYPE any
            !input_data TYPE string OPTIONAL
            !description TYPE string OPTIONAL
          RAISING
            cx_aunit_failure.
    ENDCLASS.
    
    CLASS zcl_custom_assert IMPLEMENTATION.
      METHOD assert_equals.
        DATA(lv_message) = |断言类型:相等验证|.
        IF input_data IS NOT INITIAL.
          lv_message &&= |,输入数据:{ input_data }|.
        ENDIF.
        IF description IS NOT INITIAL.
          lv_message &&= |,说明:{ description }|.
        ENDIF.
        lv_message &&= |,预期值:{ expected },实际值:{ actual }|.
    
        IF actual <> expected.
          RAISE EXCEPTION TYPE cx_aunit_failure
            EXPORTING
              text = lv_message.
        ELSE.
          " 把成功日志存到自定义存储(内表/数据库表)
          zcl_test_logger=>add_success_log( lv_message ).
        ENDIF.
      ENDMETHOD.
    ENDCLASS.
    
  • 日志回收:测试全部跑完后,用自定义日志类的导出方法,把日志整理成HTML、文本或者你需要的格式。

三、几个注意点

  • 日志别写太杂,只留关键信息:比如输入参数、核心结果、验证逻辑,避免冗余
  • 分级别记录:用INFO(成功)、WARN(潜在问题)、ERROR(失败)区分,方便后续筛选分析
  • 兼容框架生命周期:自定义断言类要适配ADT的测试流程,确保日志能在测试结束后正常导出

内容的提问来源于stack exchange,提问作者depth1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:25:19