From a3381c2d69c7dfa41ec229b33605aecffc18a96d Mon Sep 17 00:00:00 2001 From: netsrak-dev Date: Tue, 30 Jan 2024 11:19:42 +0000 Subject: [PATCH 1/2] Add helper class for improved test class flex. Introduce a helper class for enhanced test class usage in different implementations. This improves code modularity --- src/zcl_aw_part_value.clas.testclasses.abap | 14 +---- src/zcl_aw_test_helper.clas.abap | 33 +++++++++++ ...r.clas.xml => zcl_aw_test_helper.clas.xml} | 7 +-- src/zcl_aw_test_master.clas.abap | 17 ------ src/zcl_aw_tm_part_value.clas.abap | 55 ++++++++++++------- src/zcl_aw_tm_part_value.clas.xml | 7 +++ 6 files changed, 77 insertions(+), 56 deletions(-) create mode 100644 src/zcl_aw_test_helper.clas.abap rename src/{zcl_aw_test_master.clas.xml => zcl_aw_test_helper.clas.xml} (67%) delete mode 100644 src/zcl_aw_test_master.clas.abap diff --git a/src/zcl_aw_part_value.clas.testclasses.abap b/src/zcl_aw_part_value.clas.testclasses.abap index a7e0226..c6b518c 100644 --- a/src/zcl_aw_part_value.clas.testclasses.abap +++ b/src/zcl_aw_part_value.clas.testclasses.abap @@ -1,19 +1,7 @@ CLASS test DEFINITION FINAL - INHERITING FROM zcl_aw_tm_part_Value + INHERITING FROM zcl_aw_tm_part_value FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. - PRIVATE SECTION. - METHODS setup. - DATA cut TYPE REF TO zcl_aw_part_value. -ENDCLASS. - - -CLASS test IMPLEMENTATION. - - METHOD setup. - cut = NEW #( ). - ENDMETHOD. - ENDCLASS. diff --git a/src/zcl_aw_test_helper.clas.abap b/src/zcl_aw_test_helper.clas.abap new file mode 100644 index 0000000..08db181 --- /dev/null +++ b/src/zcl_aw_test_helper.clas.abap @@ -0,0 +1,33 @@ + +CLASS zcl_aw_test_helper DEFINITION + PUBLIC + CREATE PUBLIC . + + PUBLIC SECTION. + + DATA mo_class_to_test_generic TYPE REF TO object . + + METHODS constructor . + PROTECTED SECTION. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS ZCL_AW_TEST_HELPER IMPLEMENTATION. + + + METHOD constructor. + TRY. + DATA(lv_classname) = cl_abap_classdescr=>get_class_name( me ). + FIND REGEX '\\PROGRAM=([^=]+)' IN lv_classname SUBMATCHES lv_classname ##REGEX_POSIX. + lv_classname = lv_classname(30). + CREATE OBJECT me->mo_class_to_test_generic TYPE (lv_classname). + CATCH cx_root ##NO_HANDLER ##CATCH_ALL. + ENDTRY. + + IF me->mo_class_to_test_generic IS NOT BOUND. + MESSAGE a000(oo) WITH 'unable to create class to test' lv_classname ##NO_TEXT. + ENDIF. + ENDMETHOD. +ENDCLASS. diff --git a/src/zcl_aw_test_master.clas.xml b/src/zcl_aw_test_helper.clas.xml similarity index 67% rename from src/zcl_aw_test_master.clas.xml rename to src/zcl_aw_test_helper.clas.xml index 30950f2..85f8adb 100644 --- a/src/zcl_aw_test_master.clas.xml +++ b/src/zcl_aw_test_helper.clas.xml @@ -3,16 +3,13 @@ - ZCL_AW_TEST_MASTER + ZCL_AW_TEST_HELPER E - ABAP Workshop: Test master - 05 + ABAP Workshop: Test helper 1 X X X - 12 - 11 diff --git a/src/zcl_aw_test_master.clas.abap b/src/zcl_aw_test_master.clas.abap deleted file mode 100644 index 8499a6b..0000000 --- a/src/zcl_aw_test_master.clas.abap +++ /dev/null @@ -1,17 +0,0 @@ -CLASS zcl_aw_test_master DEFINITION - FOR TESTING - RISK LEVEL HARMLESS - DURATION SHORT - PUBLIC - CREATE PUBLIC . - - PUBLIC SECTION. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS zcl_aw_test_master IMPLEMENTATION. - -ENDCLASS. diff --git a/src/zcl_aw_tm_part_value.clas.abap b/src/zcl_aw_tm_part_value.clas.abap index 56f3ff1..2053688 100644 --- a/src/zcl_aw_tm_part_value.clas.abap +++ b/src/zcl_aw_tm_part_value.clas.abap @@ -1,25 +1,35 @@ -CLASS zcl_aw_tm_part_value DEFINITION - INHERITING FROM zcl_aw_test_master - FOR TESTING - RISK LEVEL HARMLESS - DURATION SHORT - PUBLIC - CREATE PUBLIC . - - PUBLIC SECTION. - PROTECTED SECTION. - METHODS structure FOR TESTING. - METHODS table FOR TESTING. - METHODS dynamic FOR TESTING. - methods table_letters for testing. - PRIVATE SECTION. - DATA cut TYPE REF TO zif_aw_part_value. - METHODS setup. +class ZCL_AW_TM_PART_VALUE definition + public + inheriting from ZCL_AW_TEST_HELPER + abstract + create public + for testing + duration short + risk level harmless . + +public section. + + methods CONSTRUCTOR . +protected section. + + methods STRUCTURE + for testing . + methods TABLE + for testing . + methods DYNAMIC + for testing . + methods TABLE_LETTERS + for testing . +private section. + + data CUT type ref to ZIF_AW_PART_VALUE . ENDCLASS. -CLASS zcl_aw_tm_part_value IMPLEMENTATION. +CLASS ZCL_AW_TM_PART_VALUE IMPLEMENTATION. + + METHOD structure. cl_abap_unit_assert=>assert_equals( exp = VALUE zif_aw_types=>address( @@ -36,9 +46,6 @@ CLASS zcl_aw_tm_part_value IMPLEMENTATION. i_country = 'US' ) ). ENDMETHOD. - METHOD setup. - cut = NEW zcl_aw_part_value( ). - ENDMETHOD. METHOD table. @@ -48,6 +55,7 @@ CLASS zcl_aw_tm_part_value IMPLEMENTATION. ELSE abap_false ) ). ENDMETHOD. + METHOD dynamic. "check address type @@ -78,4 +86,9 @@ CLASS zcl_aw_tm_part_value IMPLEMENTATION. ENDMETHOD. + + METHOD constructor. + super->constructor( ). + cut ?= mo_class_to_test_generic. + ENDMETHOD. ENDCLASS. diff --git a/src/zcl_aw_tm_part_value.clas.xml b/src/zcl_aw_tm_part_value.clas.xml index c5e369b..5935dcb 100644 --- a/src/zcl_aw_tm_part_value.clas.xml +++ b/src/zcl_aw_tm_part_value.clas.xml @@ -14,6 +14,13 @@ 12 11 + + + CONSTRUCTOR + E + CONSTRUCTOR + + From 94c99f16bb6a6c42eb8c657a808c08d8c874b996 Mon Sep 17 00:00:00 2001 From: netsrak-dev <144322707+netsrak-dev@users.noreply.github.com> Date: Wed, 10 Apr 2024 08:02:25 +0200 Subject: [PATCH 2/2] Correct abaplint check - zcl_aw_part_value.clas.abap --- src/zcl_aw_part_value.clas.abap | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/zcl_aw_part_value.clas.abap b/src/zcl_aw_part_value.clas.abap index 4eefa58..06b984f 100644 --- a/src/zcl_aw_part_value.clas.abap +++ b/src/zcl_aw_part_value.clas.abap @@ -34,7 +34,7 @@ CLASS zcl_aw_part_value IMPLEMENTATION. METHOD zif_aw_part_value~value_return_dynamic. IF i_return_address = abap_true. - e_result = VALUE zif_aw_types=>address( ). + e_result = VALUE zif_aw_types=>address( ). ELSEIF i_return_person = abap_true. e_result = VALUE zif_aw_types=>person( ). ELSE. @@ -44,7 +44,8 @@ CLASS zcl_aw_part_value IMPLEMENTATION. ENDMETHOD. METHOD zif_aw_part_value~value_fill_table_for_next. - result = VALUE #( FOR i = 0 WHILE i <= 4 ( substring( off = i val = sy-abcde len = 1 ) ) ). + result = VALUE #( FOR i = 0 WHILE i <= 4 ( substring( off = i + val = sy-abcde len = 1 ) ) ). ENDMETHOD. ENDCLASS.