本文包含了我在開發項目中經歷過的實用的ABAP單元測試指導方針。我把它們安排成爲問答的風格,歡迎任何人添加更多的Q&A's,以完成這個列表。
html
class lcl_test definition for testing "#AU Duration Short inheriting from cl_aunit_assert. "#AU Risk_Level Harmless private section. methods test_xyz_simple_call for testing. endclass. class lcl_test implementation. method test_xyz_simple_call. * Setup parameters for the call... * Perform the call perform xyz using ... * Check returned values assert_equals( act = ... exp = ... ). endmethod. endclass.
固然,使用ABAP面向對象有不少好處,好比,會有ABAP類的單元測試模板的自動生成功能。一樣地,生產代碼和測試代碼的分界會更清晰。測試類聲生成在一個用於單元測試的「包含(incluede)」部分,會同其它內容隔離。若是出於某些緣由不須要使用這些類,你依然擁有單元測試支持。java
不,並無。爲某些代碼寫單元測試會致使時間的浪費。它們是:數據庫
要點在於:應該將它們設計的儘量簡單。單元測試一樣起着單元功能文檔的做用。一樣地,若是執行修改後,單元測試失敗,會很容易從代碼中看出哪一個功能失敗了。嘗試避免測試方法中的多餘代碼。將重複代碼包裝到方法中甚至宏之中,以保證在測試下功能的實質更加可讀。直率地命名變量、方法、類和宏,使得代碼在測試時儘量的具備表達力。單元的每一個特性,都須要能夠按照如下三步測試:編程
class lcl_test definition deferred. class zcl_testee definition local friends lcl_test. ... class lcl_test definition for testing ... ...
class lcl_testee definition inheriting from zcl_someclass create public. endclass. ... class lcl_test implementation. method setup. create object go_testee type lcl_testee. endmethod. endclass.
記着,不管如何,問題不會由單元測試而是全局數據引發。單元測試只是發現問題,而不是致使問題。所以最佳的解決方式是排除類中的全局數據。api
assert_subrc( sy-subrc ).
call method cl_aunit_assert=>assert_subrc exporting act = sy-subrc.
method test_2_lief_2_pal. * Test assignment of deliveries to handling units _set_code: `1. Palette ( `, ` 1. Lieferung, 1. Pos, 50% `, ` ) `, `2. Palette ( `, ` 2. Lieferung, 2. Pos, Rest `, ` ) `. _call_parser. _assert_rows 'Pack data' gt_packdata_template 2. _assert_n_fields_in_row 'Pack data' gt_packdata_template 'exidv;vepos;vbeln;posnr;vemng;vemeh;unvel' : 1 'E1;1;1;1;50;!%;', 2 'E2;1;2;2;REST;;'. endmethod.
class lcl_test definition for testing "#AU Duration Short inheriting from cl_aunit_assert. "#AU Risk_Level Harmless ...
本文連接:http://www.cnblogs.com/hhelibeb/p/6038202.html數組
原文連接:ABAP Unit Best Practices 安全
2018.04.22更新:現有一個Open SAP的Writing Testable Code for ABAP 視頻教程,推薦觀看less