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 ...
随机推荐
- RedHat 6配置yum源为网易镜像(转)
概述 由于版权的问题,RedHat6不能直接使用yum一些指令,需要配置yum源为网易镜像,但是网上谈到很多:整理一下,将有用的信息整理如下,以便于能够为其他的配置服务配置使用:需要卸载掉原理系统自带 ...
- selenium执行JavaScript语句:控制滚动条 聚焦元素 改变下拉选项
1. 执行js脚本 控制滚动条 # http://www.cnblogs.com/yoyoketang/p/6128655.html In [347]: js = "window.scrol ...
- [SignalR2] 认证和授权
SignalR自身不提供任何用户认证特征,相反,是直接使用现有且基于(Claims-based)声明认证系统(关于这方面知识详见参考资料),非常明了,不解释,看代码中的验证代码: protected ...
- SQL反模式学习笔记14 关于Null值的使用
目标:辨别并使用Null值 反模式:将Null值作为普通的值,反之亦然 1.在表达式中使用Null: Null值与空字符串是不一样的,Null值参与任何的加.减.乘.除等其他运算,结果都是Null: ...
- POJ 3280 Cheapest Palindrome (区间DP) 经典
<题目链接> 题目大意: 一个由小写字母组成的字符串,给出字符的种类,以及字符串的长度,再给出添加每个字符和删除每个字符的代价,问你要使这个字符串变成回文串的最小代价. 解题分析: 一道区 ...
- [Web]Restful风格的适用场景
最近一直在兜兜转转Restful的相关内容,准备在原先的项目上构建restful的API. 实践过程很别扭,直到看到这篇文章[A Brief Introduction to REST], 我才终于断定 ...
- Hibernate 配置文件的基础配置
Hibernate 配置文件主要用于配置数据库连接和 Hibernate运行时所需的各种属性 每个 Hibernate 配置文件对应一个 Configuration 对象 Hibernate.cfg. ...
- 项目导入之后报错:The import javax.servlet cannot be resolved
项目导入之后报错:The import javax.servlet cannot be resolved 解决方法:在Eclipse中,右击项目,选择Build Path->configure ...
- github第一次引用开源的库
想要使用这个一个东西 第一步就是在中添加上面那句话. 这个应该是俩种使用方法,一种用于java中一个用作控件引用 此时就能使用我们引用的这个库了.
- 使用javascript和css模拟帧动画的几种方法浅析
我们平时在开发前端页面的时候,经常会播放一段帧序列.这段帧序列就像gif图片那样,反复循环播放.那大家可能会说,直接用gif图片就好了,干嘛还去模拟呢?那是因为要做得更加灵活,我们要做到以下几点: 1 ...