点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在一个项目中,我们设计了一个类。 我们称之为Z_MYCLASS。 我们希望一个人来编写代码,一个人来编写本地单元测试类中的测试方法。 不幸的是,这一次无法起作用,因为第一个更改类的人将其锁定,因此第二个用户无法再更改它。
没问题,我想:这就是全局测试类的目的。 因此,我们创建了一个全局测试类,并将一个现有的单元测试复制到该类中。
但是当我运行单元测试时,我得到消息:
全局测试类[Z_MYCLASS_TEST]不是抽象的
好。 将这个测试类抽象化没有问题。 所以我做了。 但是之后,我收到以下消息:
已处理:0个程序,0个测试类,0个测试方法
我找到了以下文档:正确使用全局测试类 >
我的期望是使用F_CUT TYPE REF TO Z_MYCLASS创建具有某些单元测试方法的全局测试类。
如前所述,它不能很好地工作...:(
class Z_MYCLASS_TEST定义 上市 抽象 最后 建立公众 用于检测 持续时间短 风险水平无害。 公共部分。 受保护的部分。 专用部分。 数据f_cut类型参考z_myclass。 方法设置。 方法check_between_1_and_6进行测试。 ENDCLASS。 CLASS Z_MYCLASS_TEST实施。 方法check_between_1_and_6。 数据随机结果TYPE i。 DATA is_between_1_and_6 TYPE abap_bool。 做1000次。 randomresult = f_cut-> generate_random()。 is_between_1_and_6 = COND#(当1和6之间的随机结果 然后abap_true 否则abap_false)。 cl_abap_unit_assert => assert_equals( 出口 行为= is_between_1_and_6 exp = abap_true)。 ENDDO。 终结法。 方法设置。 f_cut = z_myclass => factory(seed = 1)。 终结法。 ENDCLASS。
但是我不知道如何设置测试类以对另一个类进行一些单元测试。
感谢您的帮助...
谢谢
Enno
如您所参考的文档所述: ABAP单元的基本概念要求测试和测试代码驻留在同一程序中
测试类必须是要测试的类池的一部分(作为本地类)。 测试类可以是全局的原因是为了允许代码重用。
您可以做的是从Z_MYCLASS_TEST中删除FINAL属性,并在继承自Z_MYCLASS_TEST的Z_MYCLASS中声明一个空的本地测试类。
现在,如果在Z_MYCLASS上执行单元测试,则由于继承会调用在Z_MYCLASS_TEST中定义的测试方法。
(我不确定这是正确的方法,但是 从技术的角度来看,它应该起作用。)
嗨
您读过TDD文档吗? 测试驱动开发
这意味着:
首先编写测试,然后编写代码。
我认为在现实生活中可以做的是:
-与团队一起定义逻辑,程序/类的结构(高级设计)
-创建所需的接口并修复输入/输出
-创建类(空)
-创建Abap单元
- 类
我认为,如果您已创建程序的squeleton和Abap Unit部分,则可以在单独的部分中工作而不会出现问题。 问题仅在于单元测试的创建
,但是我认为在现实生活中同时创建单元测试和测试是一个坏主意
第二点, 单元测试对生产代码和生产代码的影响单元测试。 因此,这是一个循环..
不能直接测试全局测试类,这就是为什么它必须被抽象的原因。 您必须使用继承全局测试类的本地测试类。
如果全局测试类(CHECK_BETWEEN_1_AND_6)中有一个测试方法,并且您想从本地测试类运行它,则必须 在PROTECTED或PUBLIC部分的全局类中声明它。 如果在专用部分中放置它,它将永远不会运行。 或仅在本地测试类中声明测试方法。
SETUP方法在全局测试类中没有意义(与其他夹具方法相同)。 仅执行本地测试类中的SETUP方法。 解决方法:创建一种从本地测试类的SETUP调用的"全局设置"方法。
嗨,弗雷德里克,
感谢您的建议! 您当然是对的:我们的方法已不再是过去。 但是我们在一个dojo中进行编码,因此需要在该类上同时工作。 "程序员"必须对类进行一些更正(重新命名,漂亮的打印,文档等),而"测试人员"必须准备一些单元测试。 即使在流程上并没有多大意义,我们也希望找出哪些单元测试有用并进行编码。
感谢您的帮助Frederic Girod 和 Sandra Rossi !
(针对我的方法)设置全局测试类的解决方案似乎是:
全局类
本地测试类
这非常合适,因为使用此设置,我可以使用自己的测试方法创建多个全局测试类。 这是我一直很烦的一件事:在"本地测试类"这一部分中创建了多个非常复杂的本地测试类和测试方法。 当在一个"文件"中为各种不同的测试类提供数百行代码时,它的排列方式不是很好。通过这种方法,我可以区分不同的测试类。
非常感谢!
感谢GáborMárián为您提供答案! 似乎我只是一个人认识到了。 ;)
是的, ABAP单元的基本概念要求测试和测试代码驻留在同一程序中
我在下面的解决方案中,如果有多个测试类,这可能会很混乱。
一周热门 更多>