ABAP UT(单元测试)

这篇具有很好参考价值的文章主要介绍了ABAP UT(单元测试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

UT的重点是处理外部依赖(dependency),外部依赖主要是指当前需要测试的类里用到了其他类,Function Module或者是SQL;可能存在外部依赖的地方是类的属性,方法和方法参数。

处理外部依赖的做法之一是隔离(Isolation),让外部依赖返回我们需要的值从而达到测试的目的,常规做法是用接口(Interface)方法来封装外部依赖的逻辑,如果外部依赖本身是类,那也可以直接把这个类改写成接口。对于老的代码(Legacy Code),如果想做依赖隔离的话只能修改生产代码,所以新开发的代码应该尽量在有外部依赖地方使用接口来保证可测性,ABAP的代码检查(ATC)里有一项是类里所有的公有(Public)方法都需要写成接口方法,当然这只是建议,不是强制的。

UT用的接口可以是全局的,也可以局部的,局部的话是定义在类的Local部分。全局的好处是可以使用test double framework(动态创建实现类,并且可以指定方法返回值),局部的好处是不用定义全局对象,接口和测试的实现类(test double class)都在类的Local文件里定义和实现,测试类方法的返回值可以自己写逻辑指定。

定义好接口后,就是在测试环境里把接口的测试实例化对象“注入”到类里,常见做法是把测试用的接口都定义类的属性(需要是公有的或者有对应的外部调用方法),之后在测试环境中实例化(CONSTRUCTOR方法)测试类后进行“注入”,这样就实现了隔离(在生产环境下调用生产代码的逻辑,在测试环境里调用测试代码)。 Function Module除了可以使用接口封装外,也可以用Function Module的test double framework。

上面说的方法都是通过隔离外部依赖,自定义返回值来达到测试的目的,如果确定外部依赖的逻辑的话,也可以通过给“假数据”(mock data)的方法进行测试。比如如果知道外部依赖设计数据库交互,并且知道是哪些数据库表的话,可以用SQL test double(类cl_osql_test_environment)直接mock数据库表的数据,这样在测试环境中运行的话,会得到mock后的值,而不是实际数据库里的值。同样,如果确定外部依赖的类方法和Function Module的内部逻辑,也可以通过造“假数据”返回特定的值,但这种做法不是每个类方法和Function Module都能使用的,这时就要具体方法具体分析了。

总体来说隔离外部依赖更加常用,这种做法是不会执行外部依赖的代码的,所以可以保证可测性;而后面那种做法则会实际执行外部依赖代码,只不过我们了解其中的过程,通过造一些“假数据”来控制外部依赖返回的值,但不保证总是可行的。

总结一下:作为UT开发者,首先要关注外部依赖,然后进行相对应的处理;而作为生产代码开发者,如果为要保证代码的可测性,需要尽量把外部依赖封装成接口,不然后面想要补UT的话需要修改生产代码。文章来源地址https://www.toymoban.com/news/detail-753276.html

到了这里,关于ABAP UT(单元测试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单元测试:优雅编写Kotlin单元测试

    一、MockK简介 MockK是一款功能强大、易于使用的Kotlin mocking框架。在编写 单元测试 时,MockK能够帮助我们简化代码、提高测试覆盖率,并改善测试的可维护性。除了基本用法外,MockK还提供了许多额外的功能和灵活的用法,让我们能够更好地模拟对象行为、验证函数调用,并在

    2024年02月10日
    浏览(33)
  • 【单元测试】一文读懂java单元测试

    单元测试 是软件开发中常用的一种测试方法,用于验证代码的单个功能单元是否按照预期工作。 测试方法: 白盒测试(White Box Testing):在白盒测试中,测试人员了解代码的内部结构和实现细节,编写测试用例来覆盖不同的代码路径和逻辑条件。 黑盒测试(Black Box Testing)

    2024年04月17日
    浏览(32)
  • QTest 单元测试框架及单元测试思考

    在不同的公司和不同的项目上,常常会听到单元测试,但是真正能落实的确实寥寥无几,无非是在单元测试的开发时间和回报上模棱两可。 到底是否需要单元测试吗? 引用知乎观点如下: 第一个问题应该是,这个公司需要(覆盖率比较高的)测试么? 对于大部分公司来说,

    2023年04月08日
    浏览(68)
  • 单元测试之 - Review一个微服务的单元测试

    这里以github上一个microservice的demo代码为例,来看看如何为一个完整的服务编写单元测试。具体代码如下所示,我们重点查看一下catalog和customer,order中的单元测试有哪些。 首先来看catalog服务的单元测试,这个服务下面主要编写了CatalogWebIntegrationTest.java和RepositoryTest.java。下图是

    2024年02月14日
    浏览(30)
  • IDFA 单元测试以及单元测试覆盖率步骤

    1、新建java类 随意选择java类文件,新建一个Java类CountVowel,用来统计字符串中元音的个数,代码如下: 2、生成测试类 一)、对写好的类新建测试类,有以下两种方法: 将鼠标光标移动到类名上,使用 Alt+Enter 组合键,如下图,选择 Create Test ,从而新建一个测试类; 右键点

    2024年02月16日
    浏览(29)
  • C# 中的单元测试,如何使用单元测试进行程序测试和调试?

    单元测试是一种软件测试方法,用于测试单个功能或方法是否按预期工作。在 C# 中,可以使用 .NET 框架中的单元测试工具来编写和运行单元测试。 下面是使用 Visual Studio 内置的单元测试框架来创建一个简单的单元测试的步骤: 在 Visual Studio 中创建一个新的类库项目。 在新项

    2024年02月15日
    浏览(45)
  • Service层代码单元测试以及单元测试如何Mock

    接着上一篇文章:单元测试入门篇,本篇文章作为单元测试的进阶篇,主要介绍如何对Springboot Service层代码做单元测试,以及单元测试中涉及外调服务时,如何通过Mock完成测试。 现在项目都流行前后端代码分离,后端使用springboot框架,在service层编写接口代码实现逻辑。假设

    2023年04月08日
    浏览(38)
  • Day14:单元测试、Junit单元测试框架、反射、注解

    针对最小的功能单元(方法)进行正确性测试 编写正规的单元测试框架 传统的无法执行自动化测试,且无法得到测试报告 Junit的作用: 测试类取名:原类名+Test(大驼峰) 测试方法取名:test+原函数名称(小驼峰) 测试方法:必须public,无参,无返回值 测试方法上面必须加

    2024年04月14日
    浏览(49)
  • 吃透单元测试:Spock单元测试框架的应用与实践

    一,单元测试 单元测试是对软件基本组成单元进行的测试,如函数或一个类的方法。程序是由函数组成的,每个函数都要健壮,这样才能保证程序的整体质量。单元测试是对软件未来的一项必不可少的投资。”具体来说,单元测试有哪些收益呢? 它是最容易保证代码覆盖率

    2024年02月09日
    浏览(34)
  • 单元测试之 - Spring框架提供的单元/集成测试注解

    Spring框架提供了很多注解来辅助完成单元测试和集成测试(备注:这里的集成测试指容器内部的集成测试,非系统间的集成测试),先看看Spring框架提供了哪些注解以及对应的作用。 @RunWith(SpringRunner.class) / @ExtendWith(SpringExtension.class) : 用于在测试类中启用 Spring 框架的支持。

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包