login as:
~/abapcraft.dev — code, crafted in SAP
florin@s4hana:~/abap/posts/factory-pattern/src/zcl_vehicle_factory.clas.testclasses.abap $ cat zcl_vehicle_factory.clas.testclasses.abap
factory-pattern / src / zcl_vehicle_factory.clas.testclasses.abap
ABAP 47 lines
CLASS ltc_factory DEFINITION FINAL
  FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.

  PRIVATE SECTION.
    METHODS test_car_type       FOR TESTING.
    METHODS test_truck_type     FOR TESTING.
    METHODS test_car_describe   FOR TESTING.
    METHODS test_unknown_raises FOR TESTING.

ENDCLASS.


CLASS ltc_factory IMPLEMENTATION.

  METHOD test_car_type.
    DATA(lo_v) = zcl_vehicle_factory=>create_vehicle( 'CAR' ).
    cl_abap_unit_assert=>assert_equals(
      exp = 'CAR'
      act = lo_v->get_type( )
      msg = 'Vehicle type must be CAR' ).
  ENDMETHOD.

  METHOD test_truck_type.
    DATA(lo_v) = zcl_vehicle_factory=>create_vehicle( 'TRUCK' ).
    cl_abap_unit_assert=>assert_equals(
      exp = 'TRUCK'
      act = lo_v->get_type( ) ).
  ENDMETHOD.

  METHOD test_car_describe.
    DATA(lo_v) = zcl_vehicle_factory=>create_vehicle( 'CAR' ).
    cl_abap_unit_assert=>assert_not_initial(
      act = lo_v->describe( )
      msg = 'Describe must not be empty' ).
  ENDMETHOD.

  METHOD test_unknown_raises.
    TRY.
        DATA(lo_v) = zcl_vehicle_factory=>create_vehicle( 'SPACESHIP' ).
        cl_abap_unit_assert=>fail( 'Should have raised exception' ).
      CATCH cx_sy_create_object_error.
        " expected
    ENDTRY.
  ENDMETHOD.

ENDCLASS.