ABAP Unit Test 안 하면 버그 못 잡습니다? — cl_abap_unit_assert 실전 #shorts #SAP #ABAP
Moderator
· 조회 3
ABAP Unit Test란?
ABAP Unit Test는 ABAP 코드의 개별 단위(메서드, 함수)를 자동으로 검증하는 테스트 프레임워크입니다. 수동 테스트 대신 코드로 테스트를 작성해 버그를 배포 전에 잡을 수 있습니다.
테스트 클래스 구조
테스트 클래스는 FOR TESTING ADDITION 키워드와 함께 선언합니다. 테스트 메서드에도 FOR TESTING을 붙입니다.
CLASS lcl_order_test DEFINITION FOR TESTING.
PUBLIC SECTION.
METHODS setup.
METHODS teardown.
METHODS test_total FOR TESTING.
ENDCLASS.
CLASS lcl_order_test IMPLEMENTATION.
METHOD setup.
" 테스트 전 초기화
ENDMETHOD.
METHOD teardown.
" 테스트 후 정리
ENDMETHOD.
METHOD test_total.
DATA(result) = lcl_order=>calculate_total( 5 ).
cl_abap_unit_assert=>assert_equals(
act = result exp = 100 ).
ENDMETHOD.
ENDCLASS.cl_abap_unit_assert 활용
ABAP 표준 클래스 cl_abap_unit_assert는 다양한 Assertion 메서드를 제공합니다.
" 값 비교
cl_abap_unit_assert=>assert_equals(
act = result exp = 100 ).
" NOT INITIAL 체크
cl_abap_unit_assert=>assert_not_initial(
act = lv_result ).
" 바운드 체크
cl_abap_unit_assert=>assert_bound(
act = lo_object ).
" 강제 실패
cl_abap_unit_assert=>fail(
msg = '예외 미발생 오류' ).Test Double Framework
Test Double Framework를 사용하면 인터페이스 기반의 Mock 객체를 생성해 실제 데이터베이스 없이 단위 테스트가 가능합니다.
" Test Double 생성
DATA(lo_double) = CAST if_order_repo(
cl_abap_testdouble=>create( 'if_order_repo' ) ).
" 메서드 동작 설정
cl_abap_testdouble=>configure_call(
lo_double )->returning( lv_mock_value ).
lo_double->get_order( iv_id = 1 ).핵심 한 줄
테스트 코드가 곧 문서입니다.