ABAP
इकाई का परीक्षण
खोज…
एक परीक्षण वर्ग की संरचना
एक विशेष इकाई परीक्षण में स्थानीय कक्षाओं के रूप में टेस्ट कक्षाएं बनाई जाती हैं।
यह एक परीक्षण वर्ग की मूल संरचना है:
CLASS lcl_test DEFINITION
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_cut TYPE REF TO zcl_dummy.
METHODS:
setup,
"********* 30 chars *********|
dummy_test for testing.
ENDCLASS.
CLASS lcl_test IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut.
ENDMETHOD.
METHOD dummy_test.
cl_aunit_assert=>fail( ).
ENDMETHOD.
ENDCLASS.
FOR TESTING साथ घोषित की गई कोई भी विधि एक इकाई परीक्षण होगी। setup एक विशेष विधि है जिसे प्रत्येक परीक्षण से पहले निष्पादित किया जाता है।
तर्क से अलग डेटा एक्सेस
इकाई परीक्षण के लिए एक महत्वपूर्ण सिद्धांत व्यावसायिक तर्क से डेटा एक्सेस को अलग करना है। इसके लिए एक कुशल तकनीक डेटा एक्सेस के लिए इंटरफेस को परिभाषित करना है। आपका मुख्य वर्ग हमेशा सीधे पढ़ने या डेटा लिखने के बजाय उस इंटरफ़ेस के संदर्भ का उपयोग करता है।
उत्पादन कोड में मुख्य वर्ग को एक ऑब्जेक्ट दिया जाएगा जो वास्तविक डेटा एक्सेस को लपेटता है। यह चयन कथन, फंक्शन मड्यूल कॉल, कुछ भी हो सकता है। महत्वपूर्ण बात यह है कि इस वर्ग को कुछ और प्रदर्शन नहीं करना चाहिए। कोई तर्क नहीं।
मुख्य वर्ग का परीक्षण करते समय, आप इसे एक ऐसी वस्तु देते हैं जो इसके बजाय स्थैतिक, नकली डेटा परोसती है।
SCARR तालिका तक पहुंचने का एक उदाहरण
डेटा एक्सेस इंटरफ़ेस ZIF_DB_SCARR :
INTERFACE zif_db_scarr
PUBLIC.
METHODS get_all
RETURNING
VALUE(rt_scarr) TYPE scarr_tab .
ENDINTERFACE.
नकली डाटा क्लास और टेस्ट क्लास:
CLASS lcl_db_scarr DEFINITION.
PUBLIC SECTION.
INTERFACES: zif_db_scarr.
ENDCLASS.
CLASS lcl_db_scarr IMPLEMENTATION.
METHOD zif_db_scarr~get_all.
" generate static data here
ENDMETHOD.
ENDCLASS.
CLASS lcl_test DEFINITION
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
DATA:
mo_cut TYPE REF TO zcl_main_class.
METHODS:
setup.
ENDCLASS.
CLASS lcl_test IMPLEMENTATION.
METHOD setup.
DATA: lo_db_scarr TYPE REF TO lcl_db_scarr.
CREATE OBJECT lo_db_scarr.
CREATE OBJECT mo_cut
EXPORTING
io_db_scarr = lo_db_scarr.
ENDMETHOD.
ENDCLASS.
यहाँ विचार यह है कि उत्पादन कोड में, ZCL_MAIN_CLASS को एक ZIF_DB_SCARR ऑब्जेक्ट मिलेगा जो एक SELECT करता है और पूरे टेबल को वापस कर देता है जबकि यूनिट टेस्ट में एक स्थैतिक डेटासेट के खिलाफ चलता है जो कि यूनिट टेस्ट में शामिल है।