如何对读取Excel文件的方法进行单元测试

2020-09-25 06:33发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我实现了一个静态方法,该方法可以读取excel文件并使用数据导出内部表。 该方法的定义类似于以下内容:

类方法:
       read_file导入iv_file_name TYPE本地文件
                 导出et_materials TYPE ztt_mm10_material
                 引发lcx_exception。
 

对此方法进行单元测试的最佳方法是什么?

在其他编程语言中,我们可以以不同的方式处理该主题,但是根据我的知识,在ABAP中这是不可能的。 以下是如何使用python或Java解决问题的示例:
具有IO文件操作的单元测试代码(在Python中)

您可以在测试中创建文件,而无需模拟它。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我实现了一个静态方法,该方法可以读取excel文件并使用数据导出内部表。 该方法的定义类似于以下内容:

类方法:
       read_file导入iv_file_name TYPE本地文件
                 导出et_materials TYPE ztt_mm10_material
                 引发lcx_exception。
 

对此方法进行单元测试的最佳方法是什么?

在其他编程语言中,我们可以以不同的方式处理该主题,但是根据我的知识,在ABAP中这是不可能的。 以下是如何使用python或Java解决问题的示例:
具有IO文件操作的单元测试代码(在Python中)

您可以在测试中创建文件,而无需模拟它。

付费偷看设置
发送
4条回答
SAP小黑
1楼 · 2020-09-25 07:10.采纳回答

单元测试首先还涉及适当的编码,这就是为什么我认为您的代码有问题。 您的方法有两件事:阅读excel并将其内容转换为您选择的表。

我不知道您如何阅读Excel文件,但是我认为您最终会得到某种形式的中间表或类,而这是由您使用的任何FM或类返回的。 因此,在子类或替代实现中,您可以将Excel read替换为您选择的数据。 我将通过硬编码来稍微简化一下,但是您也可以在ECATT中存储各种数据集:

 class lcl_conversion。
   公共部分。
     get_data_from_excel导入i_filename的方法
                                 返回结果。
 私人部分。
   方法read_excel。
   方法convert_to_ztab。
 结束类。


 lcl_conversion类的实现。
 方法get_data_from_excel。
 结果= convert_to_ztab(read_excel(i_filename))。  
endmethod。 ... 结束类。 用于测试的ltcl_conversion类。 ... 用于测试的no_data方法。 用于测试的有效数据方法。 用于测试的invalid_data方法。 ... 方法no_data。 data(converted_data)= convert_to_ztab(value#())。 cl_abap_unit_assert => assert_initial(convert_data)。 方法。 方法valid_data。 数据(excel_data)=值无论((col = 1行= 1值="布拉") (col = 2行= 1 value = ...) ... (col = 2行= 3值='XYZ'))。 data(converted_data)= convert_to_ztab(excel_data)。 cl_abap_unit_assert => assert_equals(act = lines(conversion_data) exp = 2)。 " 1个标题和两条数据线 ...还有一些断言来检查结果。 方法。 方法invalid_data。 ..."将一些文本放入数字字段或任何其他内容 尝试。 data(converted_data)= convert_to_ztab(excel_data)。 cl_abap_unit_assert =>失败("未引发异常")。 捕获lcx_error。 "正如预期的那样 努力。 方法。 结束类。
代楠1984
2楼-- · 2020-09-25 07:23

感谢迈克提供详细的答案。

天桥码农
3楼-- · 2020-09-25 07:29
CPLASF-自律
4楼-- · 2020-09-25 07:13

Hello Horst,
我以为我知道Netweaver 7.5的所有新闻,但您总是会用新的东西感到惊讶。
"测试接缝和测试注射" 通过测试私有方法可以解决我的问题。 不幸的是,我在7.4系统上工作,我不喜欢带有自由样式测试标志的想法。

一周热门 更多>