单元测试是一种软件测试方法,用于测试软件系统的最小可测试单元,例如函数、方法或类的行为。单元测试通常由开发人员编写,并在编写代码时就开始执行。这样可以保证实时检测代码中的错误、缺陷和潜在的问题,确保代码满足预期的行为和输出。
创新互联公司于2013年开始,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元屯留做网站,已为上家服务,为屯留各地企业和个人服务,联系电话:13518219792
单元测试可以分为如下几个步骤,然后在开发中就可以不断地编写、执行、分析测试用例,并修复问题。
- Junit5
JUnit是Java领域内最为流行的单元测试框架,Junit测试又称白盒测试,旨在验证被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit的最新版本Junit 5集合了 Junit Platform、Junit Jupiter、Junit Vintage等。其中,Junit Platform是在JVM上启动测试框架的基础;Junit Jupiter提供了新的编程模型,包含了一个测试引擎,在Junit Platform上运行;Junit Vintage 提供了兼容JUnit4.x,Junit3.x的测试引擎,帮助老项目依赖包的过度升级。Springboot2.2.0+中默认集成:
org.openjdk.jmh
jmh-core
1.23
org.openjdk.jmh
jmh-generator-annprocess
1.23
常用注解及说明如下:
@Test :表示方法是测试方法(即框架操作对象),与JUnit4的@Test不同,JUnit5的@Test非常单一不能声明任何属性,拓展的测试都由Jupiter提供
@DisplayName :为测试类或者测试方法设置展示的名称
@BeforeAll :表示在所有单元测试方法之前执行
@AfterAll :表示在所有单元测试方法之后执行
@BeforeEach :表示在每个单元测试方法之前执行
@AfterEach :表示在每个单元测试方法之后执行
@Timeout :表示测试方法运行超过指定时间将会抛出TimeoutException异常
@Disabled :表示测试类或测试方法不执行,类似于JUnit4中的@Ignore
@RepeatedTest :表示方法需要重复执行的次数
@ExtendWith :为测试类或测试方法提供@Autowired的IOC注入
- JMH
JMH(Java Microbenchmark Harness)是java领域用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级,它是由Java虚拟机团队开发的。当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用 JMH 对优化的结果进行量化的分析
springboot集成方式导入依赖包如下(最新版本1.36):
org.openjdk.jmh
jmh-core
1.23
org.openjdk.jmh
jmh-generator-annprocess
1.23
JMH的应用场景如下:
(1)想准确地知道某个方法需要执行多长时间及执行时间和输入之间的相关性;
(2)对比接口不同实现在给定条件下的吞吐量;
(3)查看多少百分比的请求在多长时间内完成。
上述两个方案前者是确保代码运行的正确性,后者旨在测试代码运行的性能,在项目实战中可以做到强强联合,确保代码质量和稳定性,帮助完善或改进设计和架构,编写高质量的单元测试需要遵循最佳实践。
单元测试的目的是为了验证软件开发的功能、性能、完整性。当软件发生变化时,单元测试可以帮助开发人员确定哪些部分受到影响,以及如何更改代码。还可以帮助开发人员了解他们的代码,从单元测试中获得反馈,从而更好继续开发软件。文中提到的基于JUnit5和JMH两种互补方案,可以从代码功能和性能两个角度保证软件交付成果。
参考文献
[1] 蔡高亮,2008, 软件单元测试[J],http://www.its.cesi.cn/qkContent/articleDetail/1043,2023/3/13.
名称栏目:五分钟技术趣谈|单元测试的重要性及方案推荐
链接地址:http://www.shufengxianlan.com/qtweb/news0/141200.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联