当前位置:主页 > 云存储 > 安全 >

香港服务器_网站建设人员_便宜的

  • 安全
  • 2021-04-30 17:00
  • 动埠云

香港服务器_网站建设人员_便宜的

业务对象处理框架(businessobjectprocessingframework,BOPF)提供操作、确定和验证,以定义应用程序的(主要)逻辑。行为通常在这些接口的execute方法中定义(/BOBF/IF\u FRW\u ACTION、/BOBF/IF\u FRW\u DETERMINATION和/BOBF/IF\u FRW\u VALIDATION)。应用程序相关的数据可以使用参数io_read(type ref to/BOBF/IF_FRW_read)获得,也可以通过io_modify(type ref to/BOBF/IF_FRW_modify,物联网是啥,不可用于验证)进行修改。它们中的任何一个,如果不是两个,可能总是被使用。为execute方法编写单元测试的前提条件是mocking io\u read和/或io\u modify。这可能意味着至少要执行以下操作:

创建至少一个mocking类来实现两个接口(或者分别实现/BOBF/IF\FRW\u READ和/BOBF/IF\FRW\u MODIFY的两个类)为mocking类创建一些数据容器,这些类具有如下最基本的功能存储要检索的数据定义组合后不同节点实例之间的关系只要实例上有任何修改,就对容器进行更改如果您正在创建一些消息,请创建一些消息处理机制结果处理,以确保您的实现真正做到您想要的如果你需要进一步的行动、决定或验证,尽可能使以上所有内容可读性和可重用性良好

这个非详尽的列表使得嘲弄io\u read和io\u modify中的任何一个都毫无乐趣。模拟它们的工作可能会超过实现execute方法本身和编写单元测试本身的工作。这导致了这样一个事实,即许多实现根本没有单元测试。

BUnit–BOPF单元测试框架将处理所有模拟对象,并让您集中精力只为实现中最重要的部分(有趣的部分)编写单元测试。在这篇文章中,我将用一些简单的例子来解释如何使用它。

先决条件

本操作指南假设您已经对BOPF有了一些基本的了解,并且熟悉操作(至少在下面的例子中是这样)、确定和验证。如果您是BOPF新手,您可以查看这篇介绍业务对象处理框架(BOPF)的文章以及其中的参考资料。

此外,您需要使用SAP NetWeaver作为ABAP 7.51或更高版本。

我将使用ABAP开发工具(ADT)进行编码。但是,这不是一个硬约束。

测试单个BO实例的操作

假设我们正在使用BUnit为业务对象(BO)/BOBF/EPM\U销售发票的操作"MARK\u AS\u PAID"编写单元测试(此示例BO在NetWeaver shippings>=NW 750,nba大数据,SP0的一部分中可用)。此操作将根实例的字段"PAYMENT\u STATUS"设置为值"P"。实现可以在/BOBF/CL\u EPM\u A\u MARK\u AS\u PAID中找到。我们需要的关于BO的唯一信息是它的常量接口,在我们的示例中是/BOBF/IF\EPM\u SOI\u constants.

现在我们可以创建一个新类(命名它,例如zcl\u a\u mark\u as\u paid)。然后转到"testclasses"选项卡,用我们的第一个测试方法和一些别名创建一个本地测试类。如果您正在为自己的BO操作编写单元测试,则可以直接使用相应操作的实现类,而不是创建新的实现类。

列表:测试MARK_AS_PAID action的测试类的框架

由于该操作是在根节点上定义的,因此我们需要一个根实例。这可以通过调用BUnit

的create\u root方法来实现。BUnit root(node)对象(lo\u root)作为存储在BUnit数据容器中的数据(以组合结构的形式)的表示。这种数据表示正好对应于一个BOPF节点实例,具有创建子实例、执行操作/确定/验证的额外能力,而不必实例化BOPF服务管理器或/BOBF/IF\FRW\u MODIFY对象。现在我们有了根实例,我们需要做的就是在幕后执行操作

,调用类/BOBF/CL\u EPM\u A\u MARK\u AS\u PAID的方法/BOBF/IF\u FRW\u action~execute,企业管理平台软件,其中io\u read和io\u modify已经被BUnit模拟过了。具体地说,数据分析平台,在调用io\u read->retrieve时,根实例的数据从BUnit数据容器中读取,BUnit数据容器是在调用create\u ROOT方法时创建的。然后调用io_modify->update(在所有根实例上循环),并在BUnit数据容器中更新每个根实例的数据,

现在我们需要检查是否真的得到了预期的更改,更具体地说,每个根实例的"PAYMENT_STATUS"字段的值是否已经更新。这很简单,调用

从方法的名称很容易理解,这里的BUnit assert对象(lou assert)检查"PAYMENT\u STATUS"字段的值是否已成功更新。

就是这样。通过四个语句,我们完成了第一个单元测试的主要部分。实际上,如果我们愿意的话,我们可以用两种说法来实现。我想你可以自己弄清楚,或者给个提示:注意我们还没有使用lou结果。测试方法现在看起来是这样的

清单:单根实例的测试方法实现

测试多个BO实例的操作(批量启用)

因为它的KEY(type/BOBF/T\u FRW\u KEY)作为导入参数出现在所有三个接口的execute方法中,它可以包含多个KEY,我们需要在布尼特建立一种大规模的机制。这可以通过为几个BUnit节点实例构建一个集合来实现。让我们为动作创建第二个测试方法

猜你喜欢

微信公众号