2024年最全职场经验、为什么程序员一定要写单元测试?,2024年最新想搞定大厂面试官

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

// 通过 Test 注解标识测试方法
    @Test
    public void testAdd() {
        // 准备测试数据
        long a = 2;
        long b = 3;
        
        // 执行要测试的代码
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        
        // 验证结果
        Assert.assertEquals(5, result);
    }
}


上述代码中的 Assert 类是关键,提供了很多断言方法,比如 assertEquals(是否相等)、assertNull(是否为空)等,用来对比程序实际输出的值和我们预期的值是否一致。


如果结果正确,会看到如下输出:



![](https://img-blog.csdnimg.cn/img_convert/04c3dfe1cabb6e616d4d15a8dffedbda.webp?x-oss-process=image/format,png)


如果结果错误,输出如下,能够清晰地看到执行结果的差异:



![](https://img-blog.csdnimg.cn/img_convert/4512cf7353086ba02eec969896e55665.webp?x-oss-process=image/format,png)


##### Spring Boot 项目单测


如果是 Spring Boot 项目,我们经常需要对 Mapper 和 Service Bean 进行测试,则需要使用 `@SpringBootTest` 注解来标识单元测试类,以开启对依赖注入的支持。


以测试用户注册功能为例,示例代码如下:



import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class UserServiceTest {

@Resource
    private UserService userService;

@Test
    void userRegister() {
        // 准备数据
        String userAccount = “yupi”;
        String userPassword = “”;
        String checkPassword = “123456”;
        // 执行测试
        long result = userService.userRegister(userAccount, userPassword, checkPassword);
        // 验证结果
        Assertions.assertEquals(-1, result);
        // 再准备一组数据,重复测试流程
        userAccount = “yu”;
        result = userService.userRegister(userAccount, userPassword, checkPassword);
        Assertions.assertEquals(-1, result);
    }
}


#### 3、生成测试报告


如果系统的单元测试数量非常多(比如 1000 个),那么只验证某个单元测试用例是否正确、查看单个结果是不够的,我们需要一份全面完整的单元测试报告,便于查看单元测试覆盖度、评估测试效果和定位问题。


**测试覆盖度** 是衡量测试过程中被测试到的代码量的一个指标,一般情况下越高越好。测试覆盖度 100% 表示整个系统中所有的方法和关键语句都被测试到了。


下面推荐 2 种生成单元测试报告的方法。


##### 使用 IDEA 生成单测报告


直接在 IDEA 开发工具中选择 `Run xxx with Coverage` 执行单元测试类:



![](https://img-blog.csdnimg.cn/img_convert/a778914f05c4b7f5376c9e5c2bc357cd.webp?x-oss-process=image/format,png)


然后就能看到测试覆盖度报告了,如下图:



![](https://img-blog.csdnimg.cn/img_convert/ed9583dc524dccb64e52aac57bd8ebbd.webp?x-oss-process=image/format,png)


显然 Main 方法没有被测试到,所以显示 0%。


除了在开发工具中查看测试报告外,还可以导出报告为 HTML 文档:



![](https://img-blog.csdnimg.cn/img_convert/15fea03f14262d4e8fbcd1db4e0c919f.webp?x-oss-process=image/format,png)


导出后,会得到一个 HTML 静态文件目录,打开 `index.html` 就能在浏览器中查看更详细的单元测试报告了:



![](https://img-blog.csdnimg.cn/img_convert/130bf0908e9d0ed688675e3de410b7f1.webp?x-oss-process=image/format,png)


这种方式简单灵活,不用安装任何插件,比较推荐大家日常学习使用。


##### 使用 jacoco 生成单测报告


JaCoCo 是一个常用的 Java 代码覆盖度工具,能够自动根据单元测试执行结果生成详细的单测报告。


它的用法也很简单,推荐按照官方文档中的步骤使用。


官方文档指路:[www.eclemma.org/jacoco/trun…]( )


首先在 Maven 的 pom.xml 文件中引入:



  org.jacoco   jacoco-maven-plugin   0.8.11

当然,只引入 JaCoCo 插件还是不够的,我们通常希望在执行单元测试后生成报告,所以还要增加 `executions` 执行配置,示例代码如下:



    org.jacoco     jacoco-maven-plugin     0.8.11                           com/**/*                                         pre-test                              prepare-agent                                            post-test             test                              report                           

然后执行 Maven 的 test 命令进行单元测试:



![](https://img-blog.csdnimg.cn/img_convert/537ea0dab7e26dcecfe215ff7d04fe9c.webp?x-oss-process=image/format,png)


测试结束后,就能够在 target 目录中,看到生成的 JaCoCo 单元测试报告网站了:



![](https://img-blog.csdnimg.cn/img_convert/a1106fabcd7cc4daf308f78b1efb5c1c.webp?x-oss-process=image/format,png)


打开网站的 index.html 文件,就能看到具体的测试报告结果,非常清晰:



![](https://img-blog.csdnimg.cn/img_convert/fd082d8fbd05b0d02df0d8c159a148cc.webp?x-oss-process=image/format,png)


通常这种方式会更适用于企业中配置流水线来自动化生成测试报告的场景。


行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,**请及时加入群: 786229024**,里面有各种测试开发资料和技术可以一起交流哦。


**最后:** 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取**`【保证100%免费】`**


![](https://img-blog.csdnimg.cn/direct/2aab4a375b2a489c9f90393d66607adf.png)


**软件测试面试文档**  
 我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。![在这里插入图片描述](https://img-blog.csdnimg.cn/cc56d6ee4baf482688db0e1410e2bb51.png)  
![在这里插入图片描述](https://img-blog.csdnimg.cn/e69c203821d74ff38ffdbe1f827dbb1c.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/755123cb1321421b96888db976754489.png)


![img](https://img-blog.csdnimg.cn/img_convert/1f59b62a645158de4e4094395c85aa78.png)
![img](https://img-blog.csdnimg.cn/img_convert/3ffebae766c5cca4ef770c3dc40a4a53.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值