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

相关推荐
Asthenia04124 分钟前
MyBatis-Plus 常见 API 实战:从基础到多表联查
后端
小九没绝活7 分钟前
设计模式-桥接模式
java·设计模式·桥接模式
JKHaaa7 分钟前
头歌 JAVA 桥接模式实验
java·开发语言·桥接模式
江沉晚呤时16 分钟前
桥接模式(Bridge Pattern)在 .NET Core 中的实现
java·开发语言·后端·c#·.netcore·net
Asthenia041221 分钟前
分析 Elasticsearch 实现拼写纠错的原理及 Java 客户端操作实现
后端
小兔崽子去哪了24 分钟前
Docker 安装 MongoDB
后端·mongodb
程序员爱钓鱼25 分钟前
Go语言实现SEO友好的Slug生成器:支持中英文、唯一性检查
后端·go·排序算法
油丶酸萝卜别吃35 分钟前
springBoot中myBatisPlus的使用
java·spring boot·后端
tt55555555555535 分钟前
嵌入式面经-C语言:智能指针,`#define` 和 `const`,`typedef`,头文件中定义静态变量
c语言·开发语言·c++
马小学编程36 分钟前
Python元组
开发语言·笔记·python·学习·职场发展