JavaWeb 笔记 03

Maven, 单元测试 相关

提前声明:本文章仅作个人学习记录,不涉及商业用途。

内容记录于学习途中, 没有按分类进行总结, 可能存在错误或不完整之处。

视频地址

在线讲义地址

第一章 Maven

Maven 官网

一、概述

1. 构建生命周期 / 阶段

生命周期 描述
clean 清理项目
compile 编译项目
test 测试项目
package 打包项目

2. 项目对象模型 (POM)

<groupId>com.fallw</groupId>
<artifactId>maven-project01</artifactId>
<!-- 快照版本 -->
<version>1.0-SNAPSHOT</version>

<properties>
  <!-- 源代码 JDK 版本 -->
  <maven.compiler.source>21</maven.compiler.source>
  <!-- 字节码 JVM 版本 -->
  <maven.compiler.target>21</maven.compiler.target>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

3. 项目依赖管理 (Dependency)

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.14.0</version>
</dependency>

依赖查找顺序:本地仓库 \(\leftrightarrow\) 远程仓库(私服)\(\leftrightarrow\) 中央仓库

二、Maven 配置

1. settings.xml

<!-- 56 行 本地仓库路径 -->
<localRepository>D:\Environment\apache-maven-3.9.14</localRepository>

<!-- 162 行 私服地址 -->
<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

<!-- 229 行 默认 JDK 版本 -->
<profile>
  <id>jdk-21</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <jdk>21</jdk>
  </activation>
  <properties>
    <maven.compiler.source>21</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <maven.compiler.compilerVersion>21</maven.compiler.compilerVersion>
  </properties>
</profile>

2. IntelliJ IDEA 配置

全局配置
  1. Build Tools -> Maven -> Maven home directory, User settings file, Local repository
  2. Build Tools -> Maven -> Runner -> JRE
  3. Compiler -> Java Compiler -> Project bytecode version

三、依赖管理

1. 依赖配置

<!-- 依赖配置 -->
<dependencies>
  <dependency>...</dependency>
</dependencies>
<!-- 排除配置 -->
<exclusions>
  <exclusion>...</exclusion>
</exclusions>

2. 生命周期

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

  • clean:清理项目,删除目标目录
  • default:默认生命周期,包含 compile、test、package 等阶段
  • site:生成项目站点文档
生命周期 命令 具体功能
clean mvn clean 删除项目目录下的 target 目录
compile mvn compile 编译项目源代码,生成 .class 文件
test mvn test 执行 test 下的测试类
package mvn package 将项目打包成一个 jar 包安装到本项目的 target
install mvn install 将项目安装到本地仓库

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

第二章 单元测试

一、测试概述

测试方式 目的
白盒测试 验证代码与逻辑的正确性
黑盒测试 验证软件的功能与兼容性
灰盒测试 同时考虑白盒和黑盒测试
测试步骤 目的 测试方式
单元测试 检验项目代码的基本单位的正确性 白盒测试
集成测试 检验项目之间的协作是否符合预期 灰盒测试
系统测试 验证软件系统的正确性与性能 黑盒测试
验收测试 验证软件系统是否与客户需求一致 黑盒测试

二、JUnit

优点:

  1. 测试代码与源代码分开,便于维护。
  2. 一个测试方法执行失败,不会影响其他测试方法。
  3. 自动生成测试报告,红色失败,绿色成功。

1. pom.xml 引入 JUnit

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter</artifactId>
  <version>5.9.1</version>
  <scope>test</scope>
</dependency>

2. 测试类

// 单元测试类命名规范:XxxTest。
public class GetAgeTest {
  @Test
  // JUnit 测试方法必须声明为 public void。
  public void testGetAge(){
    Integer age = new UserService().getAge("110002200505091218");
    System.out.println(age);
  }
}

三、断言

1. Assertions 类

断言方法 描述
Assertions.assertEquals(Object exp,Object act, String msg) 断言两个值是否相等
Assertions.assertNotEquals(Object unexp,Object act, String msg) 断言两个值是否不相等
Assertions.assertTrue(boolean exp, String msg) 断言 boolean 值为 true
Assertions.assertFalse(boolean exp, String msg) 断言 boolean 值为 false
Assertions.assertNull(Object exp, String msg) 断言对象为 null
Assertions.assertNotNull(Object exp, String msg) 断言对象不为 null
Assertions.assertThrows(Class expType, Executable exp, String msg) 断言抛出指定异常

2. 常见注解

注解 描述 备注
@Test 标记测试方法
@ParameterizedTest 标记参数化测试方法 无需使用 @Test
@ValueSource 为参数化测试方法提供测试参数 @ParameterizedTest 一起使用
@DisplayName 为测试方法的显示名称 默认为类名、方法名
@BeforeEach 在每个测试方法之前执行 初始化资源
@AfterEach 在每个测试方法之后执行 释放资源
@BeforeAll 在所有测试方法之前执行 static 初始化资源,只执行一次
@AfterAll 在所有测试方法之后执行 static 释放资源,只执行一次
posted @ 2026-03-19 23:00  fallw  阅读(5)  评论(0)    收藏  举报