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 ...
随机推荐
- LQFP(未整理完成)
注意:文中所提供的链接有可能会失效.不定期维护,如有异常,期待指正,谢谢! LQFP48 7 x 7 mm 图片来源:https://www.st.com/resource/en/datasheet/ ...
- selenium+python-unittest多线程执行用例
前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时...那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线程 ...
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
- tensorflow添加层-【老鱼学tensorflow】
本节主要定义个添加层的函数,在深度学习中是通过创建多层神经网络来实现的,因此添加层的函数会被经常用到: import tensorflow as tf def add_layer(inputs, in ...
- SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...
- 平衡树简单教程及模板(splay, 替罪羊树, 非旋treap)
原文链接https://www.cnblogs.com/zhouzhendong/p/Balanced-Binary-Tree.html 注意是简单教程,不是入门教程. splay 1. 旋转: 假设 ...
- Scala数组| 集合
arrays :+ 5尾部 头部5 +: arrays TODO 声明不可变数组,不能删; 默认情况下,scala中集合的声明全都是不可变的 val arrays: Array[Int] = Ar ...
- Problem B. Beer Refrigerator
http://codeforces.com/gym/241680/problem/B比赛的时候考虑的是,它们3个尽可能接近,然后好麻烦,不如暴力枚举,这里不需要质因数分解,而是两重循环枚举所有因数,第 ...
- Android-动态权限获取
声明权限: 首先在清单文件中写出相应权限 <!--存储权限--> <uses-permission android:name="android.permission.WRI ...
- npm的一些常用命令(在国内,建议使用cnpm,在淘宝镜像里面下载就行)
npm的一些常用命令(在国内,npm操作可能会比较慢,建议使用cnpm,在淘宝镜像里面下载就行,用法和npm一样) cnpm安装地址,直接安装 npm install cnpm -g --regist ...