abap test seam 和 TEST-INJECTION
TEST-SEAM 和 TEST-INJECTION 一块儿使用 可以模拟出调用方法的return,exporting,chaning值。
例如:
1: 假设有一个类zcl_demo_input,该类的方法request会 EXPORTING一个值 input。 比如:前端框架的某个类,会接收用户输入的一些值给后台。
实际的环境中,用户会从页面输入值,我们也会需要调用该类来接收值。但是在unit test测试环境中,我们没有界面可控输入,我们就需要根据方法(function model,form等)返回的数据类型去模拟这些值。需要用到:TEST-SEAM 和 TEST-INJECTION
2:创建一个类,使用方法去调用第一步创建的方法。Unit test时,红色部分不会执行。会执行 unit test中的 test-injection。
method GET_INPUT.
TEST-SEAM fake_input. "执行到该方法,会跳转到 test-injection fake_input 方法,并将 " test-injection fake_input 模拟的数据作为 下面语句执行的结果。 用于上下文测试。
zcl_demo_input=>request( IMPORTING field = input ). " 真实环境中,该方法会执行,测试类中调用该方法,这个语句不执行。
"使用 TEST-INJECTION fake_input 中定义的值作为该方法的exporting值,changing值或 returning 值。
END-TEST-SEAM.
data a TYPE string.
a = input.
* input = 'yyy'.
endmethod.
方法的返回值时input

3: 创建要给Unit test 方法调用第二步创建的方法。
*"* use this source file for your ABAP unit test classes
class ztst definition for testing
duration short
risk level harmless
.
private section.
data:
f_Cut type ref to zcls. "class under test
methods: get_Input for testing.
endclass. "ztst
class ztst implementation.
method get_Input.
TEST-INJECTION fake_input.
input = 'xxx'. " 作为第二步红色代码的调用结果数据。
END-TEST-INJECTION.
DATA(input) = NEW zcls( )->get_input( ). " 蓝色区域可以直接不用,只要在其它地方调用了 get_input方法就行。
cl_abap_unit_assert=>assert_equals(
EXPORTING
exp = 'xxx'
act = input ).
endmethod.
endclass.
input = 'xxx'. 就是第二步红色代码真实执行环境应该得到的数据。 使用TEST-SEAM 和 TEST-INJECTION 模拟了出来,以供上下文使用。
abap test seam 和 TEST-INJECTION的更多相关文章
- Jerry的ABAP, Java和JavaScript乱炖
写这个系列的初衷是SAP Chengdu office有越来越多的应届毕业生加入,这些新同事通过在大学的专业学习,具备了Java和JavaScript背景,但是进入SAP之后大家觉得ABAP没有Jav ...
- ABAP SICF服务和Java Servlet的比较
In my opinion ABAP ICF handler and Java Servlet play the same role in enhancement which enables your ...
- ABAP单元测试最佳实践
本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...
- ABAP实现屏幕自己刷新和跳转功能
ABAP开发工程中,有时候需要让跳转出的屏幕自动实现跳转和刷新的功能,该功能的实现需要在屏幕PBO 里面调用相应的事件执行. 关键代码为: SET TITLEBAR ' 屏幕自动程序'. IF g_c ...
- 【解决方案】 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userHandler': Injection of resource dependencies failed;
一个错误会浪费好多青春绳命 鉴于此,为了不让大家也走弯路,分享解决方案. [错误代码提示] StandardWrapper.Throwableorg.springframework.beans.fac ...
- 一步步实现ABAP后台导入EXCEL到数据库【3】
在一步步实现ABAP后台导入EXCEL到数据库[2]里,我们已经实现计划后台作业将数据导入数据库的功能.但是,这只是针对一个简单的自定义结构的导入程序.在实践应用中,面对不同的表.不同的导入文件,我们 ...
- 一步步实现ABAP后台导入EXCEL到数据库【2】
前文:http://www.cnblogs.com/hhelibeb/p/5912330.html 既然后台作业只能在应用服务器运行,那么,我们可以先将要上传的数据保存在应用服务器中,之后再以后台作业 ...
- 让ABAP开发者愈加轻松的若干快捷键
引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. ...
- ABAP游标的使用
在Oracle,SQLServer中游标的使用是经常的,所以在ABAP不懂是不行的...... 1.声明游标 OPEN CURSOR [WITH HOLD] <c> FOR SEL ...
随机推荐
- hdu3652 数位dp记忆化搜索
从未见过的船新版本数位dp,,省去了预处理过程,直接进行计算 #include<bits/stdc++.h> using namespace std; #define ll long lo ...
- ThinkPHP5配置redis缓存
thinkphp采用cache类提供缓存功能支持,采用驱动方式,在使用缓存之前需要进行初始化操作.支持的缓存类型包括file.memcache.wincache.sqlite.redis和xcache ...
- 在.NET开发中的单元测试工具之(2)——xUnit.Net
在上一篇<在.NET开发中的单元测试工具之(1)——NUnit>中讲述了如何使用NUnit在.NET开发中进行单元测试以及NUnit的一些缺点,今天将讲述如何使用xUnit.Net来进行单 ...
- nginx+apache动静分离/负载均衡
[主从] [Mysql-Master] log-bin=mysql-bin server-id = MariaDB [(none)]> grant replication slave on *. ...
- mysql查看每个数据库所占磁盘大小
#查看每个数据库所占磁盘大小 SELECT TABLE_SCHEMA AS "库名", , ) AS "表所占空间(MB)", , ) AS "索引所 ...
- [OpenCV-Python] OpenCV 中摄像机标定和 3D 重构 部分 VII
部分 VII摄像机标定和 3D 重构 OpenCV-Python 中文教程(搬运)目录 42 摄像机标定 目标 • 学习摄像机畸变以及摄像机的内部参数和外部参数 • 学习找到这些参数,对畸变图像进行修 ...
- python 类和元类(metaclass)的理解和简单运用
(一) python中的类 首先这里讨论的python类,都基于继承于object的新式类进行讨论. 首先在python中,所有东西都是对象.这句话非常重要要理解元类我要重新来理解一下python中的 ...
- ant gradle curl等工具原理以及使用记录
1.ant是早一些的java 项目配置管理工具. 2.gradle是比maven还新的项目配置管理工具. 3.curl可以方便进行网络测试.curl可以方便用来http请求测试,支持各种命令,从这个角 ...
- 2019-2-21.NET中异常类(Exception)
.NET中异常类(Exception) 异常:程序在运行期间发生的错误.异常对象就是封装这些错误的对象. try{}catch{}是非常重要的,捕获try程序块中所有发生的异常,如果没有捕获异常的话, ...
- [PKUSC2018]星际穿越
[PKUSC2018]星际穿越 题目大意: 有一排编号为\(1\sim n\)的\(n(n\le3\times10^5)\)个点,第\(i(i\ge 2)\)个点与\([l_i,i-1]\)之间所有点 ...