点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在尝试为自定义类编写单元测试...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我正在尝试为自定义类编写单元测试...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我正在尝试为自定义类编写单元测试,我们称它为 OutboundDeliveryUpdater
,它依赖于 com.sap.cloud.sdk.s4hana.datamodel.odata.namespaces .outbounddeliveryv2.batch.OutboundDeliveryV2ServiceBatch
(这是一个类字段)。 要求是在S4系统上更新多个外向交货项目。 OutboundDeliveryUpdater
中执行更新的方法如下所示(为简洁起见,省略了异常处理):
OutboundDeliveryV2ServiceBatchChangeSet changeSet = outboundDeliveryService.beginChangeSet();
itemsForUpdation.forEach(changeSet :: updateOutbDeliveryItem);
changeSet.endChangeSet();
BatchResponse batchResponse = outboundDeliveryService.execute(destination);
boolean isUpdateSuccessful batchResponse.get(0).isSuccess();
现在的问题是,在编写上述代码的单元测试时,必须模仿以下内容:
outboundDeliveryService.beginChangeSet()
和 outboundDeliveryService.execute(destination)
目的地
,它是HttpDestination的一个实例 changeSet.updateOutbDeliveryItem()
batchResponse.get()
这使单元测试非常复杂。 我们必须模拟一个真实的依赖项( outboundDeliveryService
)和该依赖项上执行的方法所返回的对象( changeSet
, batchResponse
)。 这似乎是对德米特尔法的经典违反,并且代码演示了深入合作者,这就是它变得越来越困难的原因 为此代码编写单元测试。
是否有更好的书写方式:
OutboundDeliveryUpdater
的更好方法,以便解决该问题? 例如 OutboundDeliveryUpdater
可以依赖于新类,例如 SomeService
,它充当外观并隐藏了 OutboundDeliveryV2ServiceBatchChangeSet
的复杂性。 但这又会将测试的复杂性从 OutboundDeliveryUpdater
的单元测试转移到 SomeService
的测试。
感谢您的回复。 我已经在堆栈溢出中发布了相同的问题。
一周热门 更多>