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

JavaWeb后端-Maven、单元测试

简介

Maven是一款用于管理构建Java项目的工具

Maven作用

  • 依赖管理:方便地管理项目依赖的资源(jar包)
  • 项目构建:标准跨平台的项目构建方式
  • 同一项目结构

Maven核心

在这里插入图片描述

Maven坐标

Maven中的坐标是资源(jar)的唯一标识,通过该坐标可唯一定位资源位置
使用坐标定义项目或引入项目中需要的依赖

主要组成:

  • groupId:定义当前Maven项目隶属组织的名称(通常域名反写)
  • artifactId:定义当前Maven项目名称
  • version:定义当前项目版本号
    SNAPSHOT:功能不稳定,尚处于开发版本,快照版本
    RELEASE:功能趋于稳定,当前停止更新,可用于发行

依赖配置

1、在pom.xml中编写< dependencies>标签
2、在< dependencies>标签中使用< dependency>引入坐标
3、定义坐标的groupId、artifactId、version
4、点击刷新按钮引入最新加入的坐标

<!--    配置依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version></dependency></dependencies>

排除依赖

<!--    配置依赖--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.1.4</version><!--            排除依赖--><exclusions><exclusion><groupId>io.micrometer</groupId><artifactId>micrometer-observation</artifactId></exclusion></exclusions></dependency></dependencies>

生命周期

Maven中有三套相互独立的生命周期

  • clean:清理工作
  • default:核心工作,如编译、测试、打包、安装、部署
  • site:生成报告、发布站点等

在这里插入图片描述

在这里插入图片描述
注意
同一套生命周期中,运行后面的阶段时,前面的阶段都会运行

单元测试

单元测试:针对最小的功能单元(方法),编写测试代码对齐正确性进行测试

  • 阶段划分
    在这里插入图片描述
  • 测试方法:白盒测试、黑盒测试、灰盒测试

单元测试相关知识链接

断言

在这里插入图片描述

public class UserService {/*** 给定一个身份证号,计算该用户的年龄* @param idCard*/public Integer getAge(String idCard) {if(idCard == null|| idCard.length() != 18){throw new IllegalArgumentException("请输入正确的身份证号");}String birthday = idCard.substring(6,14);LocalDate parse = LocalDate.parse(birthday, DateTimeFormatter.ofPattern("yyyyMMdd"));LocalDate now = LocalDate.now();return now.getYear() - parse.getYear();}/*** 给定一个身份证号,计算该用户的性别* @param idCard*/public String getGender(String idCard) {if(idCard == null|| idCard.length() != 18){throw new IllegalArgumentException("请输入正确的身份证号");}String gender = idCard.substring(16,17);if(Integer.parseInt(gender) % 2 == 0){return "女";}return "男";}
}
/*** 测试类*/
public class UserServiceTest {@Testpublic void testGetAge(){UserService userService = new UserService();Integer age = userService.getAge("42010119991001001X");System.out.println(age);}@Testpublic void testGetGender(){UserService userService = new UserService();String gender = userService.getGender("42010119991001001X");System.out.println(gender);}/*** 断言*/@Testpublic void testGetAgewithAssert(){UserService userService = new UserService();Integer age = userService.getAge("42010119991001001X");Assertions.assertEquals(26, age,"年龄计算逻辑有误");}@Testpublic void testGetAgewithAssert2(){UserService userService = new UserService();Assertions.assertThrows(IllegalArgumentException.class,()->{userService.getAge(null);});}
}

常见注解

注解相关知识链接
在这里插入图片描述

/*** 测试类*/
@DisplayName("用户服务测试类")
public class UserServiceTest {@Testpublic void testGetAge(){UserService userService = new UserService();Integer age = userService.getAge("42010119991001001X");System.out.println(age);}@Testpublic void testGetGender(){UserService userService = new UserService();String gender = userService.getGender("42010119991001001X");System.out.println(gender);}/*** 断言*/@Testpublic void testGetAgewithAssert(){UserService userService = new UserService();Integer age = userService.getAge("42010119991001001X");Assertions.assertEquals(26, age,"年龄计算逻辑有误");}@Testpublic void testGetAgewithAssert2(){UserService userService = new UserService();Assertions.assertThrows(IllegalArgumentException.class,()->{userService.getAge(null);});}/*** 参数化测试*/@DisplayName("测试用户性别")@ParameterizedTest@ValueSource(strings = {"42010119991001001X","42010119991009501X"})public void testGetGenderwithParam(String idCard){UserService userService = new UserService();String age = userService.getGender(idCard);Assertions.assertEquals("男", age,"性别计算逻辑有误");}@BeforeAll//所有单元测试方法前运行一次public static void beforeAll(){System.out.println("测试开始");}@AfterAll//所有单元测试方法后运行一次public static void afterAll(){System.out.println("测试结束");}@BeforeEach//每个单元测试方法前运行一次public void beforeEach(){System.out.println("开始测试");}@AfterEach// 每个单元测试方法后运行一次public void afterEach(){System.out.println("结束测试");}
}

Maven依赖范围

依赖的jar包,默认情况下可在任何地方使用,可通过< scope>…< /scope>设置作用范围
作用范围:
在这里插入图片描述

<!--junit依赖--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.10.0</version><scope>test</scope></dependency>

Maven常见问题

在这里插入图片描述

http://www.dtcms.com/a/503181.html

相关文章:

  • 微网站后台怎么注册有哪些公众号是小黄油的
  • 【SayCan】LLM+价值函数:以言为引,量力而行
  • 做亚马逊外国网站需要语言好吗大都会app约
  • DaVinci4.2.3 | 无限次AI图片生成,可以预制多种风格,提示限制清理数据重新进即可
  • Linux 配置双栈协议(IPv4 + IPv6)详解
  • JAVA全栈JVM篇————初识JVM
  • 在PyTorch中实现自定义损失函数
  • Hoeffding树:数据流挖掘中的高效分类算法详解
  • 深入解析Java并发基石AQS框架的设计哲学与实战应用
  • 爬虫+Docker:让你的爬虫项目一键部署、可移植
  • 微信网站设计模板下载不用建网站怎么做淘宝客
  • wordpress主题 外贸网站模板下载新品发布会流程
  • 数据结构----树
  • uni-app 入门学习教程,从入门到精通,uni-app组件的详细语法知识点与使用方法(5)
  • 桑基图、弦图、旭日图:如何表现复杂流向关系
  • 网站赚钱系统爬虫搜索引擎
  • 深度学习——循环神经网络(RNN)实战项目:基于PyTorch的文本情感分析
  • Java 中 List 与数组的转换
  • Flink SQL 与 Kafka 整合详细教程
  • 机票售票网站开发wordpress前台显示友链
  • 电子电气架构 --- 汽车软件架构未来的发展方向
  • JavaScript 表单验证
  • android - JPG图片转换HDR图片,heic格式
  • 【C语言】文件操作(附源码与图片)
  • Vue-Router4使用详解(结合Vue3)
  • 免费做做网站网站建设优化方法 s
  • 图书馆理论与建设网站北京工程建设监理协会网站
  • postman 调用接口设置全局变量
  • Lua协程coroutine库用法
  • 若依字典原理---后端