Dav*_*son 10 abap unit-testing
我想在我的ABAP程序中实现Abap Unit测试.我的第一份报告是ABAP的经典形式 - 没有OO课程等.
这甚至可能吗?ABAP UNIT是否意味着明确测试OO类?
或者,它还可以测试典型的表格吗?所以,如果我有一个名为"PERFORM get_date_range使用sy-date changing lv_fromdate lv_todate"的表单.我可以为此编写ABAP单元测试吗?或者它必须是一个类中的方法?
顺便说一下..我是Java开发人员很长时间学习ABAP,并且想要使用ABAP UNIT.
这是带有单元测试的示例报告:
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.
Run Code Online (Sandbox Code Playgroud)
我不确定我是否正确理解了这个问题,但你肯定可以在ABAP程序中包括单元测试,例如报告程序.在报告程序中包含以下代码,然后进行编译.
之后,当您转到对象列表(Ctrl + Shift + F5显示)时,您可以右键单击您的程序,然后Execute -> Unit Tests从菜单中选择.
重要的是,单元测试被标记为FOR TESTING并且至少标记了一种方法FOR TESTING.在RISK LEVEL另外还将确定是否根据系统设置,测试被允许运行.(在编辑器中点击F1关键字阅读更多内容).
* 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.
Run Code Online (Sandbox Code Playgroud)
你可以很好地在你的测试类/方法中使用
PERFORM <form> IN PROGRAM <prog>
然后验证您返回的结果。
编辑:
此外,SAP 帮助说明了这一点:
创建 ABAP 单元测试
ABAP 单元测试以 ABAP 程序中本地测试类中的测试方法的形式实现,并使用辅助类 CL_AUNIT_ASSERT 的静态方法检查预期结果。
这验证了 ABAP 程序的测试应该是本地测试类的这一点,根据下面的一些答案。仍然可以使用,PERFORM <form> IN PROGRAM <prog>但我敢说,在本地进行测试是一种更好的方法。
T。