如何创建含输入输出与说明的单元测试详细日志?
增强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
相关产品推荐
相关产品推荐

