ABAP单元测试-本地测试类,测试其他全局类的代码

时间:2019-12-17 14:12:10

标签: unit-testing sap abap

是否有一种干净的方法来编写全局测试类{{1下的本地测试类CL_A中的全局类LCL_B的生产代码(特别是私有方法)的单元测试}}?到目前为止,我已经找到了一个技巧,这与干净的编码实践相去甚远。 TC_BTC_B的朋友,CL_ALCL_B的本地朋友。如果要测试类TC_B的方法M_A,则必须在全局测试类CL_A中创建额外的包装器方法M_B,该类调用TC_B。请查看较低的伪代码示例,因为如果没有结构化示例,这可能会造成混淆。

感谢!


M_A

CLASS CL_A definition global friends TC_B.
   private:
      METHODS: M_A.

1 个答案:

答案 0 :(得分:2)

Test publics, not internals,因为此处提供了详细的推理。

如果不可能(例如,由于您陷入了遗留代码),请建立一个与原始类成为朋友的全局测试类,并将私有方法公开为公共方法。

CLASS original_class DEFINITION.
  PRIVATE SECTION.
    METHODS some_private_method ...
ENDCLASS.

CLASS test_wrapper DEFINITION PUBLIC CREATE PUBLIC.
  PUBLIC SECTION.
    METHODS public_wrapper_for_private ...
ENDCLASS.

CLASS test_wrapper DEFINITION GLOBAL FRIENDS original_class.

CLASS test_wrapper IMPLEMENTATION.
  METHOD public_wrapper_for_private.
    result = some_private_method( ).
  ENDMETHOD.
ENDCLASS.

然后您可以在任何测试test_wrapper的地方创建本地单元测试类。

但是,该解决方案非常脆弱且不合格,在您有机会重构原始的类设计之前,它最多只是一种临时手段。

相关问题