ABAP单元测试的简单例子

本文介绍了一个ABAP程序中的单元测试案例,该程序旨在从特定格式的字符串中提取附件数量,并通过两个测试用例验证其正确性。文章详细展示了ABAP单元测试的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ABAP的实际开发中还主要是面向过程的,除了设计界面时,实际当中使用类的地方真的屈指可数。发然发现ABAP可以使用单元测试,下面是个简单的例子。

假设程序中有一个get_attach_no方法,它负责从p_bktxt参数中获取其中包含的附件数。p_bktxt一般是类似“附件数 1”,函数的功能就是要将其中的1返回。

 1 report ztest. 
 2   
 3 start-of-selection. 
 4   
 5 form get_attach_no using p_bktxt type bktxt. 
 6     data: str_length type i, 
 7             start_pos type i, 
 8             attach_length type i. 
 9   
10     str_length = strlen( p_bktxt ). 
11   
12     " 标记1 
13   
14     search p_bktxt for '附件数'. 
15   
16     if sy-subrc = 0. 
17         start_pos = sy-fdpos. 
18         start_pos = start_pos + 3. 
19   
20         attach_length = str_length - start_pos. 
21   
22         if attach_length > 0. 
23             p_bktxt = p_bktxt+start_pos(attach_length). 
24             return. 
25         endif. 
26     endif. 
27   
28     p_bktxt = ''. 
29 endform.

这个程序明显有一个bug,就是当输入是空字符串“”或者是“附件数”这样的字符串,会出错,实际上我们希望能够返回空字符串。

按照之前的JUNIT的经验,如果要单元测试,首先写一个测试用例保证原来的功能没问题,再写一个测试用例来测试新出现的情况。

在写单元测试类时,必须要加上FOR TESTING,所有的测试方法都要放在private方法段里,其中的assert方法是cl_aunit_assert=> assert_equals,参数act是实际的值,exp是期望值,msg是用来报错时提示的。类的定义和实现如下:

 1 CLASS test DEFINITION FOR TESTING. 
 2   PRIVATE SECTION. 
 3         METHODS test_get_attach_no FOR TESTING. 
 4         METHODS test_get_attach_no_new FOR TESTING. 
 5 ENDCLASS. 
 6   
 7 CLASS test IMPLEMENTATION. 
 8     METHOD test_get_attach_no. 
 9         DATA: test_bktxt type bktxt. 
10         test_bktxt = '附件数 1'; 
11   
12         PERFORM get_attach_no using test_bktxt. 
13         cl_aunit_assert=>assert_equals( act = test_bktxt exp = '1' msg = '正常获取失败'). 
14     ENDMETHOD. 
15   
16     METHODS test_get_attach_no_new. 
17         DATA: test_bktxt type bktxt. 
18         test_bktxt = '附件数'; 
19   
20         cl_aunit_assert=>assert_equals( act = test_bktxt exp = '" msg = '空附件数获取失败'). 
21     ENDMETHOD. 
22 ENDCLASS.

第一个测试用例是 test_get_attach_no ,新增的功能的测试用例是 test_get_attach_no_new。开始运行时,程序一定会报一个错的,为了能够测试通过,在标记1位置增加以下这段就可以了。

1 if str_length <= 3. 
2     p_bktxt = ''. 
3     return. 
4 endif.
 
作者: chiefsailor | 版权声明: 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址: http://www.chiefsailor.net/blog/2011/04/sap-abap-unit-test-example/

转载于:https://www.cnblogs.com/shelwin/articles/3225654.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值