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 ...
随机推荐
- hexo基本操作
1.新建一篇文章:hexo new post "article title" 2.生成静态网页:hexo g 3.预览效果:hexo s 4.发布:hexo d
- thinkphp5调用阿里大鱼短信
:在Controller.php public function send() { if (request()->isPost()) { $phone = input('post.phone/s ...
- 五分钟快速掌握RPC原理及实现
随着公司规模的不断扩大,以及业务量的激增,单体应用逐步演化为服务/微服务的架构模式, 服务之间的调用大多采用rpc的方式调用,或者消息队列的方式进行解耦.几乎每个大厂都会创建自己的rpc框架,或者基于 ...
- C#代码执行耗时计算,此处是监测的mvc控制器方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011511086/article/details/78710980using System;usi ...
- commanderJs编写命令行工具(cli)
前言: 最近需要做一个内部的node cli来独立构建流程,对整个命令行工具实现流程有了大致了解,下面来解释一下如何实现一个cli,和如何使用 commander 库. 新手误区: 在开始实现之前 ...
- cmd应用基础 扫盲教程
cmd是什么? 对于程序员而言,cmd命令提示符是windows操作系统下一个比较重要的工具.对于程序员而言,为了追求更高的效率而抛弃花俏的界面已然是意见很常见的行为,截止到目前的,全世界仍有大量的服 ...
- js之promise讲解
1 Promise概述 Promise对象是CommonJS工作组提出的一种规范,目的是为异步操作提供统一接口. 那么,什么是Promises? 首先,它是一个对象,也就是说与其他JavaScript ...
- 百度分享到修改url
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 常见问题:bootstrap datepicker日期插件汉化
引入简体中文js(bootstrap-datepicker.zh-CN.js),并在datepicker属性配置language为‘zh-CN’即可,示例如下: $(".form_datet ...
- linux学习:xargs与grep用法整理
xargs xargs 是给命令传递参数的一个过滤器,也是组合多个命令的一个工具. xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据. xargs 也可 ...