使用 SAP Joule 生成 ABAP 单元测试

学习目标

  • 概述 ADT 中集成的基于 AI 的 ABAP 单元功能。

  • 使用 SAP Joule 生成 ABAP 单元测试。

ADT 中基于 AI 的 ABAP 单元功能

简介

作为 ABAP 开发人员,您不断努力提高代码的质量和可靠性。编写彻底的单元测试是这种努力的基石,但它可能非常耗时。面向开发人员的 SAP Joule ABAP AI 功能可以通过生成 ABAP 单元测试显著加速此流程,允许您专注于优化和定制这些测试,以确保全面覆盖。

使用场景

面向开发人员的 SAP Joule ABAP AI 功能在创建 ABAP 单元测试(直接集成到 Eclipse 中的 ABAP 开发工具 (ADT))方面提供了强大的帮助。这款由人工智能驱动的功能能够帮助你:

  • 缩短开发时间 :自动生成初始测试方法,省去编写样板代码的工作量。

  • 提高测试覆盖范围 :确定可能缺少的潜在测试用例和相关性。

  • 提高代码质量 :重构生成的测试代码,遵守卓越实践和编码标准。

功能

面向开发人员的 SAP Joule ABAP AI 功能为 ABAP 开发人员提供集成到 ADT 的基于 AI 的 ABAP 单元功能。这些功能可以通过 ABAP 单元聊天访问,旨在帮助您更有效地创建和改进测试。以下是概览:

  • 测试生成 :从 ADT 中的不同位置生成 ABAP 单元测试。

  • 相关性分析 :识别测试不友好的相关性以改进单元测试。

  • 测试双重支持 :通过将测试不友好的依赖项替换为测试双打来将其隔离。

  • 测试代码说明 :通过测试代码解释获取洞察,以识别测试嗅觉并了解测试模式。

  • 生成的测试代码重构 :重构生成的测试代码以满足质量标准和编码样式首选项。

  • 拆分测试类和测试方法 :通过拆分测试类和方法改进代码结构。

生成 ABAP 单元测试

使用 ABAP 单元聊天生成测试

让我们浏览一个使用 Joule 和 ABAP 单元聊天生成 ABAP 单元测试的示例。

注意

除此处显示的内容外,您还可以使用 Joule 聊天中的自由式提示与 AI 支持的 ABAP 单元功能进行交互。

场景:存在全局 ABAP 类 ZCL_00_SOLUTION,其中包含具有方法 FIND_PASSENGER_FLIGHT 的本地类 LCL_CARRIER。已存在此类的 ABAP 单元测试,这些测试在测试类 LTCL_FIND_FLIGHTS 中实施。

启动 ABAP 单元聊天

要使用 ABAP Unit Chat 生成测试,请在源代码编辑器中右键单击,然后选择 JouleStart Chat for ABAP Unit 。ABAP 单元聊天随即打开,询问您要如何处理类。

生成测试

如果要创建 ABAP 单元测试以验证代码,请选择生成测试

如果要专门了解有关现有 ABAP 单元测试的更多详细信息,例如是否存在测试冶炼或使用了哪些测试模式,请选择解释 <测试类名称> 。在我们的案例中,测试类的名称为 LTCL_FIND_FLIGHTS。

如果要识别测试不友好的相关性以改进测试代码,请选择查找测试不友好相关性

您还可以通过键入聊天来使用简单的自由式提示。

由于我们希望添加 ABAP 单元测试,因此我们选择*"生成测试*"。在下一步中,您可以使用以下选项生成测试方法(此处不显示):

  • 所选方法...:通过此选项,您可以选择要为其生成 ABAP 单元测试的全局类的方法。

  • 所选局部类...:此选项允许您选择要为其生成 ABAP 单元测试的本地类及其相应方法。

在此,我们选择为本地类 LCL_CARRIER 的方法 FIND_PASSENGER_FLIGHT 生成 ABAP 单元测试。

添加测试

在下一步中,您可以在将测试添加到 <现有测试类的名称> (此处为 LTCL_FIND_FLIGHTS)和将测试添加到新测试类之间进行选择。我们选择第一个选项。

审核生成的代码

在下一步中,将显示生成的代码,我们可以选择代码上方的按钮之一:

  • 选择插入以在当前光标位置插入生成的代码。

  • 选择复制将生成的代码复制到剪贴板。

重构生成的测试代码

使用 Joule 生成单元测试后,您可以通过直接在 Joule 聊天中输入自由式提示来重构生成的代码。

重构是使用 AI 生成单元测试时的重要步骤。它确保测试代码符合您的质量标准并符合您的首选编码样式。要重构生成的代码,请在 Joule 聊天中将说明作为自由式提示输入。

以下示例显示了可以请求 Joule 执行的操作:

  • 避免匈牙利表示法(无前缀)

  • 在设置方法中创建 CUT

  • 提取并使用参数化自定义断言

  • 内嵌和移除自定义断言

  • 针对接口而非类的程序

  • 使用内联声明

  • 使用构造函数表达式填充结构和表

  • 在一行中写入 assert 语句

我们的例子到此结束。Joule 可以根据测试方法的逻辑生成更复杂的测试。请记得始终检查并细化生成的代码,以确保其满足您的特定测试需求。

总结

  • 面向开发人员的 SAP Joule ABAP AI 功能可加速 ABAP 单元测试的创建,从而提高代码质量并减少开发时间。

  • 该流程包括启动 ABAP 单元聊天、选择方法、选择测试类以及检查/插入生成的测试代码。

  • ADT 中集成的基于 AI 的 ABAP 单元功能包括测试生成、相关性分析、测试双重支持、测试代码解释、生成的测试代码重构以及拆分测试类和测试方法。

  • ABAP 单元聊天允许自由式提示与基于 AI 的 ABAP 单元功能进行交互。

进一步阅读

  • ABAP 单元测试 | SAP Help Portal

  • 面向开发人员的 SAP Joule, ABAP AI 功能 | SAP Help Portal