gpt4 book ai didi

unit-testing - 在 ABAP 单元测试中模拟 sy-uname

转载 作者:行者123 更新时间:2023-12-04 05:31:29 25 4
gpt4 key购买 nike

我正在尝试用 ABAP 编写我的第一个单元测试。

我的测试方法获取登录用户的团队成员(通过系统变量 sy-uname )。

因为我希望测试对每个人都运行,所以我不能让方法运行并断言我自己的团队成员之一。

我要 mock sy-uname ,因此测试不依赖于执行它的人。

这可能吗?如果是,你如何模拟系统参数?

最佳答案

我一半同意豪杰的回答:应该不是 使用 Test Seams (exist since ABAP 7.50)对于如此简单的情况(替换 sy-uname ),您应该只使用他建议的提供程序类。

测试接缝被认为是 污染 生产代码,因为它降低了代码的可读性(生产代码和测试代码的混合)。

注意:测试接缝的 ABAP 文档(上面的链接)至少给出了以下可能的用法:

  • 授权检查(AUTHORITY-CHECK)
  • ABAP SQL 语句(SELECT、MODIFY 等)——这是一个糟糕的例子,因为 ABAP SQL 可以用 ABAP 7.52 类来模拟 CL_OSQL_TEST_ENVIRONMENT .

  • 根据经验,根本不应使用测试接缝,也不应将其视为最后的解决方案。

    但是,如果没有其他选择,比如向“遗留”代码添加测试(写得不好的旧代码,通常不是使用面向对象的设计模式编写的,被认为无法通过 ABAP 单元进行测试),那么您最终可能没有其他选择。

    正如 Horst Keller (one of best ABAP experts in the world and responsible of ABAP documentation at SAP) 所述:

    "If you cannot redesign and rewrite the whole application, as a workaround you make the code test dependent. This is regarded as bad style, but it helps."



    由于问题只是关于 sy-uname这不是关于整个程序,所以重构的努力 sy-uname少得多,所以没有理由不使用类。

    关于unit-testing - 在 ABAP 单元测试中模拟 sy-uname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757214/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com