当前位置: 首页 > news >正文

单元测试学习笔记(一)

自动化测试

通过测试工具/编程模拟手动测试步骤,全自动半自动执行测试用例,对比预期输出和实际输出,记录并统计测试结果,减少重复的工作量。

单元测试

针对最小的单元测试,Java中就是一个一个的方法就是一个一个的单元,编写测试代码自动化进行正确性测试,得到测试报告

Junit单元测试框架

灵活编写测试代码,可以针对某个方法执行测试,也可一键全部执行测试,自动生成测试报告

使用步骤:

编写一个单独的测试类,对需要测试的类进行测试,为里面每个业务方法都编写测试方法

例子1:printNumber方法测试

类中方法如下:

public static void printNumber(String name) {System.out.println("名字长度是:"+name.length());}

 测试代码如下

 @Testpublic void testPrintNumber(){StringUtil.printNumber("小七");}

加上@Test注解,就可以在写好的代码任意位置右键,选择run执行测试代码,显示绿色即测试成功,输出实际测试结果,但下面这个测试用例太简单,没考虑特殊情况

再加一个为空的情况测试

 @Testpublic void testPrintNumber(){StringUtil.printNumber("小七");//第一句正常执行StringUtil.printNumber(null);//第二句报错}

如下图,第一句正常执行,第二句异常,说明这次测试有水平,成功测试出了bug,然后就需要在原来的类中修改逻辑,完善逻辑

原类中方法修改后:

 public static void printNumber(String name) {if(name==null){System.out.println(0);return;}System.out.println("名字长度是:"+name.length());}

再次测试成功通过:

例子2:getMaxIndex方法测试

方法:

public static int getMaxIndex(String data) {if(data==null){return -1;}return data.length();}

测试:

@Testpublic void testGetMaxIndex(){int index1 = StringUtil.getMaxIndex(null);System.out.println(index1);int index2 = StringUtil.getMaxIndex("天青色等烟雨");System.out.println(index2);}

测试结果如下

实际上这个方法是错的,因为方法的目的是为了得出字符串最大的索引,但是现在输出的是字符串的长度,因此该方法需要修改Bug,但是现在写的这种测试就分析不出bug只能分析代码有没有异常,所以引出单元测试最核心的功能之一:断言机制

断言机制

用junit提供的Assertions里面的assertEquals方法对于index2"天青色等烟雨"的索引进行判断

代码:

  @Testpublic void testGetMaxIndex(){int index2 = StringUtil.getMaxIndex("天青色等烟雨");System.out.println(index2);Assertions.assertEquals(5,index2,"方法内部有Bug!");}

测试结果:

 改变方法使其正确:

public static int getMaxIndex(String data) {if(data==null){return -1;}return data.length()-1;//增加-1}

再次运行:

之所以叫自动化测试,因为写完代码一运行就可以测试出结果

 

相关文章:

  • 金融数据分析(Python)个人学习笔记(12):网络爬虫
  • Python列表赋值的终极指南:性能与方法的艺术
  • Kafka 消息积压监控和报警配置的详细步骤
  • Open GL ES -> 模版测试,绘制SurfaceView中某个目标区域
  • 2.Spring MVC与WebFlux响应式编程
  • Ubuntu与OpenHarmony OS 5.0显示系统架构比较
  • Trae国内版怎么用?Trae IDE 内置 MCP 市场配置使用指南
  • 软考软件设计师考试情况与大纲概述
  • 从零开始构建微博爬虫与数据分析系统
  • 蓝桥杯 19.合根植物
  • JavaScript性能优化实战(2):DOM操作优化策略
  • 使用FreeRTOS解决单片机串口异步打印
  • Spark-Streaming
  • 第一章-语言基础\2.竞赛常用库函数\其他库函数
  • vite详细打包配置,包含性能优化、资源处理...
  • 通过dogssl申请ssl免费证书
  • 如何一键提取多个 PPT 幻灯片中的备注到 TXT 记事本文件中
  • 通过AI工具或模型创建PPT的不同方式详解,结合 Assistants API、DALL·E 3 等工具的功能对比及表格总结
  • Word处理控件Spire.Doc系列教程:C# 为 Word 文档设置背景颜色或背景图片
  • 什么是snmp协议?在优雅草星云智控AI物联网监控系统中如何添加设备进行监控【星云智控手册01】-优雅草卓伊凡
  • 体坛联播|曼城击败维拉迎英超三连胜,巴萨遭遇魔鬼赛程
  • 新质生产力的宜昌解法:抢滩“高智绿”新赛道,化工产品一克卖数千元
  • 浙江一季度GDP为22300亿元,同比增长6.0%
  • 我国与沙特签署《核能发展安全与安保合作谅解备忘录》
  • “站在亚洲实现整体振兴的新起点上”——习近平主席对越南、马来西亚、柬埔寨进行国事访问纪实
  • 对话|棋后居文君:创造历史之后,还有继续追梦的心