云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名交易_魔兽世界怀旧服务器_三重好礼

小七 141 0

到目前为止,我们都已经认识到单元测试代码的优点,并接受它作为开发过程中不可协商的一部分。但是,随着将代码推送到数据库的范式转变,我们已经毫不客气地回到了软件测试的黑暗时代。我们现在面临的问题是如何测试我们在ABAP CDS实体中实现的代码下推逻辑。

CDS test Double Framework使开发人员能够使用著名的ABAP单元测试框架以自动化的方式测试CDS实体中表达的逻辑。

因为CDS实体中的逻辑是在底层数据库中执行的(独立于ABAP运行时),不可能使用传统的ABAP解决方案进行依赖注入。实体的依赖组件(DOC)需要在数据库中加倍,我们必须确保在测试CDS实体时,数据库引擎调用/执行这些加倍,而不是依赖组件。

为了能够以受控的方式测试被测CDS实体(CUT)中的逻辑,我们还必须提供通过双通道将测试特定数据注入切割的可能性。这意味着必须能够将测试数据插入到double中,以便在执行剪切时double可以返回该数据。这对于ABAP CD中固有只读的依赖组件来说尤其具有挑战性,e、 g.数据库视图和数据库功能

在整个帖子中使用的重要缩写是:

CUT=CDS被测实体

DOC=依赖于组件

CDS测试双框架解决了上述挑战,并通过自动实现CDS实体的单元测试:

单元测试应侧重于检查专用的非琐碎组件由给定视图定义和实现的函数。不是每个CDS视图都需要单元测试。在为CDS视图执行单元测试之前,云服务器租用,建议确定与测试相关的实体的各个方面。

一般来说,应该为包含某种代码下推的实体执行单元测试。测试的潜在候选对象可能如下:

计算和/或过滤器、转换、条件表达式,如CASE…THEN…ELSE或COALESCE、类型更改强制转换操作、基数更改或空值检查、连接行为、复杂where条件等。,

单元测试不应用于测试CDS实体的属性,品高云,这些属性可能更好地使用静态检查、集成测试等进行测试,或者如果它们不能像简单的CDS投影视图那样提供任何有益的值。

基于CDS测试双重框架的测试不适用于性能测试。

在下面的第节,我们将使用广泛使用的ABAP单元测试框架本身为以下CDS视图创建单元测试@AbapCatalog.sqlview名称:'zSo_Items_By_1'@EndUserText.label文件:'选择列表中的聚合/函数'@AbapCatalog.compiler.compareFilter比较过滤器:正确定义按税率查看销售订单\u项目\u从CdsFrwk\销售\订单\项目中选择关联[1]到snwd\u so\u sales\u order on so\u guid=\u sales_order.node\u键{所以你的guid,联合销售_订单号.so\u id,'999999999')作为so\u id,货币代码,总和(总金额)作为总和总金额,税率,_销售订单}分组依据所以你的guid,_销售_订单号.so\u id,货币代码,税率

创建ABAP测试类

创建ABAP测试类对CDS视图进行单元测试。很好的做法是使用相同/相似的切割名称,并在测试类的前面加上\u TEST。例如,物联网大赛,对于CDS Salesorder \u Items \u By \u TaxRate,测试类可以是Salesorder \u Items \u By \u TaxRate \u TEST。

因为单元测试和CDS是不同的工件,相同/相似的名称有助于轻松搜索相关测试。

分类Salesorder\u Items\u By\u TaxRate\u测试定义FINAL for TESTING持续时间短风险等级无害。私人区。......ENDCLASS.

类SO\u ITEMS\u BY\u TAXRATE\u TEST实现。......ENDCLASS.

Define Fixture Methods

定义以下设置和拆卸方法。

执行方法cl\u cds\u test\u environment=>create(i\u for \u entity=''),云服务平台,隐式地在数据库中创建所有依赖的组件测试双精度。此方法在测试类中只能调用一次。

"Fixture method class\u setup在执行测试类的开始时只执行一次方法类设置。对于参数i\u For \u entity,指定要进行单元测试的CDS视图。这将在数据库中创建所有依赖于组件的双重测试。environment=cl\u cds\u test\u environment=>create(i\u for\u entity='salesforder\u Items\u By\u TaxRate')。ENDMETHOD.

定义单元测试方法

method cuco\u 1\u taxrate\u 1\u item\u 1\u ok.

ENDMETHOD.

准备输入–在双倍中插入测试数据

method cuco\u 1\u taxrate\u 1\u item\u ok.

ENDMETHOD.

执行CD

从cdsfrwk\u so\u items\u中选择*按\u taxrate进入表@act\u results.

验证输出–使用ABAP单元测试API断言

exp\u results=VALUE#((so\货币\代码='EUR'总额\总额='1'税率='19.00'))。clu abap\u unit\u assert=>断言等于(act=行(act\U结果)exp=行(exp\u results)).

ENDMETHOD.

在ABAP开发工具中,打开包含CD的所有单元测试的ABAP测试类。右键单击并选择runas->ABAP Unit Test,数据分析平台,或者按ctrl+shift+F10运行单元测试。结果显示在ABAP Unit Runner eclipse视图中。

注意:目前无法在DDL源代码编辑器中运行测试。

CDS Test Double框架支持为给定的CDS视图(CUT)的以下依赖组件(文档)创建测试加倍:

DDIC表DDIC视图CD视图带参数的CDS视图外部视图表函数CD特殊功能。货币转换和单位转换

您还可以打开/关闭给定CD的DCL。更多细节将在本文后面提供。

依赖组件是表函数

类型表函数的双重处理方式与任何CDS视图相同

依赖组件是带参数的CDS视图

CDS测试双重框架提供cl\u cds\u test\u data=>创建(…)->参数(..)将测试数据插入带有参数的"双类型"视图中。

找到的方法欧元税率为19欧元。

。。。...ENDMETHOD.

DCL影响测试中的CD