2012-10-05 40 views
9

Me gustaría implementar las pruebas de la Unidad Abap en mis programas ABAP. Mi primer informe es una forma clásica ABAP - sin clases OO, etc.¿Se pueden utilizar las pruebas ABAP UNIT en los programas clásicos de ABAP?

¿Esto es posible? ¿ABAP UNIT significa explícitamente probar OO classes?

O, ¿también puede probar las formas típicas? Entonces, si tuviera un formulario llamado "PERFORM get_date_range usando sy-date cambiando lv_fromdate lv_todate". ¿Puedo escribir una prueba de la Unidad ABAP para eso? ¿O debe ser un método en una clase?

Btw .. Hace mucho tiempo que soy desarrollador de Java, estoy aprendiendo ABAP y quiero usar ABAP UNIT.

Respuesta

3

Se podría muy bien en su clase de prueba/método de usar

PERFORM <form> IN PROGRAM <prog>

Y luego validar los resultados que obtiene de vuelta.

Editar:

Por otra parte, los estados de SAP ayuda esto: Unidad ABAP
Creación Pruebas
Las pruebas unitarias ABAP se implementan en forma de métodos de ensayo en las clases de prueba locales en programas ABAP y los resultados esperados son comprobado usando los métodos estáticos de la clase auxiliar CL_AUNIT_ASSERT.

Lo que valida el punto de que las pruebas para los programas ABAP deben ser clases de prueba locales según algunas de las respuestas a continuación. Todavía se puede usar PERFORM <form> IN PROGRAM <prog> pero me atrevería a decir que es un mejor enfoque para realizar las pruebas localmente.

T.

+0

Puede probar, pero esto no será una prueba de unidad. – fabiopagoti

+0

ahh ... No sabía de esa sintaxis 'EN PROGRAMA' ... la razón por la que hice la pregunta es porque soy muy nuevo al estilo ABAP.No hay apetito para probar la unidad Abap en mi tienda. Para mí es algo personal utilizar técnicas TDD y poner en marcha la Unidad Abap en el código que escribo. – Davidson

+0

Mantenga esta sintaxis en mente si cambia el nombre de su programa. ;-) – fabiopagoti

4

No estoy seguro de si he entendido bien la pregunta, pero que sin duda puede incluir pruebas de unidad en programas ABAP, por ejemplo reportar programas. Incluya el código a continuación en un programa de informe, luego compílelo.

Después, cuando vaya a la Lista de objetos (Ctrl + Shift + F5 para mostrar), puede hacer clic derecho en su programa y luego elegir Execute -> Unit Tests en el menú.

La parte importante es que las pruebas unitarias están marcadas como FOR TESTING y tienen al menos un método marcado FOR TESTING también. La adición RISK LEVEL también determinará si, de acuerdo con la configuración del sistema, se permite ejecutar una prueba. (Presione F1 en la palabra clave en el editor para leer más).

* The following defines a unit test class 
class unit_tests definition for testing risk level harmless. 
    public section. 
    methods: test_query for testing. 
endclass. 

class unit_tests implementation. 
    method test_query. 
    data: lv_result type string. 
    perform execute_query_b using '123' changing lv_result. 
    assert lv_result = 'Expected_value'. 
    endmethod. 
endclass. 

* Here is a subroutine in our program we wish to test 
form execute_query_b using a changing res. 
    res = 'Expected_value'. 
endform. 
2

Aquí está un ejemplo de informe con las pruebas unitarias:

report ztest. 

end-of-selection. 

    data number type i value 10. 
    perform write_value using number. 
    perform add_5 changing number. 
    perform write_value using number. 
    perform subtract_2 changing number. 
    perform write_value using number. 


form add_5 changing x type i. 
    x = x + 5. 
endform. 

form subtract_2 changing x type i. 
    x = x - 2. 
endform. 

form write_value using x type i. 
    data x_str type string. 
    x_str = x. 
    condense x_str. 
    write:/x_str. 
endform. 

class lcl_test definition for testing duration short risk level harmless. 
    public section. 
    protected section. 
    methods add_5 for testing. 
    methods subtract_2 for testing. 
    private section. 
    methods setup. 
endclass. 

class lcl_test implementation. 
    method add_5. 
    data number type i. 
    number = 5. 
    perform add_5 changing number. 
    cl_aunit_assert=>assert_equals(act = number exp = 10). 
    number = 20. 
    perform add_5 changing number. 
    cl_aunit_assert=>assert_equals(act = number exp = 25). 
    endmethod. 
    method subtract_2. 
    data number type i. 
    number = 5. 
    perform subtract_2 changing number. 
    cl_aunit_assert=>assert_equals(act = number exp = 3). 
    number = 20. 
    perform subtract_2 changing number. 
    cl_aunit_assert=>assert_equals(act = number exp = 18). 
    endmethod. 
    method setup. 
    endmethod. 
endclass. 
+1

Gracias por los ejemplos adicionales. Aprecio mucho el esfuerzo. Y, sí, entendiste la pregunta. – Davidson

-1

En ABAP programación que permitirá a los desarrolladores a hacer la prueba de la unidad.

ABAP también contiene MACRO's concepto como en C-programming, pero en ABAP MACROS no permite la prueba de la unidad.

REPORT ZDEMO_INTERNALTABLES. 

TYPES : BEGIN OF ty_scarr, 

     carrid TYPE scarr-carrid, 
     carrname TYPE scarr-carrname, 
     END OF ty_scarr. 

DATA : it_scarr TYPE STANDARD TABLE OF ty_scarr, 

     wa_scarr TYPE ty_scarr. 
     PERFORM SA . 

*&---------------------------------------------------------------------* 
*&  Form SA 
*&---------------------------------------------------------------------* 
*  text 
*----------------------------------------------------------------------* 
* --> p1  text 
* <-- p2  text 
*----------------------------------------------------------------------* 

FORM SA . 

    wa_scarr-carrid = 'AA'. 
     wa_scarr-carrname = 'American airlines'. 
     insert wa_scarr into table it_scarr . 

     wa_scarr-carrid = 'df'. 
     wa_scarr-carrname = 'xmy demy airlines'. 
     insert wa_scarr into table it_scarr. 

     wa_scarr-carrid = 'AC'. 
     wa_scarr-carrname = 'AIRLINES'. 
     APPEND WA_SCARR TO IT_SCARR. 

     wa_scarr-carrid = 'AD'. 
     wa_scarr-carrname = 'American airlines'. 
     insert wa_scarr into table it_scarr. 


     if SY-SUBRC = 0. 
      ENDIF. 
ENDFORM.     " SA 
Cuestiones relacionadas