-对测试驱动开发中的消息处理的怀疑

2020-08-20 05:03发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我试图在一个非常简单的s...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我试图在一个非常简单的se38程序中添加TDD,但遇到了一个问题,我尝试在论坛上进行谷歌搜索,但未找到解决方案。 因此,如果有人已经遇到了这个问题,那么请分享经验如何解决这一问题将对您有很大的帮助。

问题语句:在我的旧程序(不是基于OOP)中,在子例程中有一条message语句,这导致ABAP单元测试运行失败。

尝试了几种方法,到目前为止似乎没有成果。 每次它都会引发CX_AUNIT_UNCAUGHT_MESSAGE异常。

可能缺少一些非常基本的东西!

这是消息语句引起的问题,可能是因为它试图与GUI连接,不确定。

我正在下面的"测试类/方法"下处理这段代码:

但是它仍然失败,我的期望是,它应该通过测试。 As此消息需要根据给定的测试数据进行提示,并且我不想将该消息作为来自process_data例程的导出参数传递。 我想尽量保持表格不变。

任何指向该特定问题的指针都将非常有帮助。

谢谢。 索姆

(118.1 kB)
付费偷看设置
发送
11条回答
xfwsx85
1楼 · 2020-08-20 06:05.采纳回答

你好

在单元测试中,被测代码中的普通MESSAGE语句在单元测试中被"禁止"。

单元测试运行时实际上在会话中运行,而没有可用的对话框。 就像您的代码片段一样,没有引发消息或未添加其他消息的消息取决于对话框(或在后台运行),因此在这里不起作用。

结果屏幕为此提示(微弱) 分析标签中的案例中包含错误的文字:" MESSAGE ...引发,但未处理!" (我确实知道这完全没有帮助)。 ABAP Unit坚称,您的MESSAGE语句已经添加了RAISING附加项,并且在到达单元测试运行时环境的主要代码之前没有人抓住它。

您需要更改代码以传播此消息,而不是直接传播此消息。 在此表单中显示:

  • 在7.50以下,您可以在引发此异常时包装在Exception类(LCX_OBJECT)中(用RAISE EXCEPTION类型的LCX_OBJECT ...替换MESSAGE语句,检查RAISE EXCEPTION语法;您可以将其作为参数传递或直接定义为内部的常量 异常类)。
  • 如果您已经在 7.50,您可以依靠RAESS EXCEPTION的MESSAGE语句
  • 将消息序列化为"消息协议"(FORM参数/内部表,使用类似BAPIRET2的类型)以 显示在(主要)外部代码上。 Standard在许多功能模块和所有应返回成功/错误消息以显示的BAPI中执行此操作。

然后在调用此表单的地方调整代码以处理异常/表单协议 显示它。

最诚挚的问候

吹牛啤
2楼-- · 2020-08-20 06:01

感谢您向彼得指出。 实际上,我尝试过,但是在表单中这并没有被接受,因为带有引发的消息是基于非类的,而表单引发(基于类)。 但这在类/方法中可以正常工作。 谢谢您的评论和帮助!

野沐沐
3楼-- · 2020-08-20 05:46

您好 Frederic Girod

感谢您的评论。 在这里,您去了:

您可以发布本地测试类定义和测试方法定义吗?

谢谢,索姆

非常感谢,我感谢您的回答,并列举了一些有用的很好的例子。 但是我的问题是PERFORM/FORM。

As表单也可以引发异常,但是这是基于类的,而message可以引发非基于类的异常。

因此,我无法通过消息后引发raise语句,但使用引发异常类型.....(基于类)的方式将该异常传播回调用者。

我正在尝试使之工作,因为有许多遗留代码具有这种情况,以及是否有任何可用的选项(我不知道但有人已经用某种技术解决了),否则需要代码重新对齐

我发现基于类的场景有点容易,因为有很多选择(您已经共享了一个),也可以继承和重新定义并在try〜catch内部进行处理。 但是,当这是FORM且不在全局FM/Class下时,我感觉有些不同。

亦是此间程序员
5楼-- · 2020-08-20 05:42

谢谢,是的,如果出现异常,可以同意使用一种更好的方法来处理这种情况...-问候,索姆

一周热门 更多>