Maven生命周期

三套生命周期,项目清理,项目构建,项目生成

我们主要关注五个阶段

  • clean:移除上一次构建生成的文件
  • compile:编译项目源代码
  • test:使用合适的单元测试框架运行测试
  • package:将编译后的文件打包,如:jar, war等
  • install: 安装项目到本地仓库


在同一套生命周期中,运行后面的阶段时,前面的阶段都会运行。

执行指定的生命周期

  • 在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行
  • 在命令行中,通过命令执行

    clean:清理上一次项目构建产生的文件,也就是删除target目录。

compile:编译项目文件,放在target目录下

test:执行单元测试,稍后讲解

site :打包,生成jar包文件,放在target目录下

install:安装,将当前maven项目安装到我们的本地仓库

若想知道我们的项目安装到本地仓库什么位置了,就要先根据xml文件中的信息查找

如果你是默认的如上图,那么路径就是你的本地仓库文件夹下的org目录下的example目录下的maven_project01

例:"E:\maven\apache-maven-3.9.9\mvn_repo\org\example\maven_project01"

如果你进行了设置,如下:

那么本地位置就会在

...你的仓库\com\my_learn\maven_project01

注意,编者在第一次使用install时出现了报错(没有package),按照compile->package->install操作后就成功生成了jar包,但是在install时应该是会自动执行之前的所有操作的,编者clean后再次直接install也成功了,应该是偶然错误。

测试

测试是用来辅助鉴定软件正确性,完整性,安全性和质量的重要内容,因此重点讲解

测试方法又分为:白盒,黑盒,灰盒测试

  • 白盒测试:开发人员知道内部代码,可判断代码逻辑是否正确,验证代码
  • 黑盒测试:不清楚软件内部结构,用于验证软件功能和兼容性等
  • 灰盒测试:结合白盒和黑盒。

单元测试

针对最小的功能单元(比如一个方法)进行正确性测试。

JUnit是最流行的java测试框架之一,方便进行测试。

为何不在main方法直接跑》

  • 测试代码与源代码未分开,难维护
  • 一个方法测试失效,影响后面的方法
  • 无法自动化测试,得到测试报告


使用JUnit进行单元测试

下面以案例的形式进行讲解

  1. 在pom.xml中引入依赖
  2. 在test/java目录下创建测试类,并编写对应的测试方法,并在方法上声明@Test注解。
  3. 运行测试

注意:JUnit单元测试类命名必须以Test结尾,单元测试方法必须声明为public void

一图讲解:

如图,我们在main/java/com.huohuo包中编写好了待测试的代码UserService,并在test/java/com.huohuo包中编写好了测试程序,就是@Test注解下的测试方法,调用待测试的类方法。

此时,测试方法右边出现了绿色的小箭头,点击就能执行测试,测试成功就会显示如图的对勾。

那么有时候我们的方法没有报错,却有逻辑错误,比如1+1=3,那么如何测试出来呢

实际上断言测试就是以上固定的流程,可以辅助我们进行判断。

接下来我们看一看常见的注解

实际上这些注解和方法了解就行了,用的时候随时查。

最后是企业级开发的一些规范

企业开发规范

我们可以利用ai工具辅助生成专业的单元测试

Maven依赖范围

常见问题解决方案

end

下一节是web基础知识.

致谢 :本文参考黑马程序员的视频,本人也看过很多黑马程序员的视频,给我带来非常大的帮助。

https://www.bilibili.com/video/BV1yGydYEE3H/?vd_source=1b8f9bfb1d0891faf1c70d7678ae56db

相关推荐
编码者卢布4 分钟前
【Azure Storage Account】Azure Table Storage 跨区批量迁移方案
后端·python·flask
编码者卢布11 分钟前
【App Service】Java应用上传文件功能部署在App Service Windows上报错 413 Payload Too Large
java·开发语言·windows
kaikaile199512 分钟前
结构风荷载理论与Matlab计算
开发语言·matlab
切糕师学AI21 分钟前
ARM 汇编器中的伪指令(Assembler Directives)
开发语言·arm开发·c#
q行1 小时前
Spring概述(含单例设计模式和工厂设计模式)
java·spring
吕司1 小时前
Qt的信号与槽
开发语言·qt
好好研究1 小时前
SpringBoot扩展SpringMVC
java·spring boot·spring·servlet·filter·listener
毕设源码-郭学长1 小时前
【开题答辩全过程】以 高校项目团队管理网站为例,包含答辩的问题和答案
java
bjxiaxueliang2 小时前
一文掌握C/C++命名规范:风格、规则与实践详解
c语言·开发语言·c++