关于打包中是否会将单元测试一起打包的测试

一、前言

今天很闲,就想到了服务优化方面,将公司的某个服务打包完成后,发现包已经将近60多MB,比原来多了那么一点(是因为加了很多业务导致,和单元测试没有关系),然后我就突然想到一个问题,单元测试,因为我们写的这些服务都是没有写单元测试代码的,但是这就有一个问题了,如果我写了单元测试的话,会不会把单元测试的代码一起打包?这就有问题了,如果会的话,就会导致服务打包后越来越大,而这些单元测试在服务包中又没有必要,所以自己进行了测试。

二、测试过程

1)我新建了一个SpringBoot的极致精简Demo,因为通过初始化一个SpringBoot项目的时候,会默认添加一个启动类和默认test的包,这样就够了。项目目录如下:
在这里插入图片描述
2)直接打包,看打包后target目录中的文件。我是在IDEA中通过工具先执行clean,然后是执行compile,最后执行package命令
clean不用说了,会清空target目录下的东西,
执行compile,会编译程序,检查是否有编译错误以及将java文件生成对应的class文件。
执行package,也就是将服务打包,如果你没有设置跳过单元测试的话,还会在打包前,执行单元测试。
在这里插入图片描述
可以看到没有错误,并且打包成功。打包后target目录如下:
在这里插入图片描述

3)解压打包好的jar包(因为jar包是ZIP压缩包的一种,所以是可以直接解压的),看里面是否含有test的class文件。
在这里插入图片描述
可以看到只有三个文件夹;BOOT-INF里面是你写的项目的代码以及一个lib文件夹,没有test文件
META-INF 文件夹是你在pom里面的依赖以及一个MF文件,这个MF文件就是用来描述项目中的资源位置(lib在哪,哪个是入口启动)的文件
org文件是springBoot类加载器
4)结论:SpringBoot打包时不会将单元测试的文件一起打包。
三、扩展测试
打包完成后,在target文件夹中会有一个test-classes文件,这个文件能不能去掉呢?
我下面的测试是通过package过程中跳过单元测试和通过在maven中设置忽略某些文件这两种方式进行的,过程和结果就不细说了,因为自己傻了,因为这些操作肯定会影响到test-classes文件的生成,因为只要单元测试的代码在,他就会在。(因为程序启动的时候实际执行的是class文件啊,就是这个目录下的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵喵@香菜

感谢观众老爷送的一发火箭!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值