JavaWeb 笔记 03
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 配置
全局配置
- Build Tools -> Maven -> Maven home directory, User settings file, Local repository
- Build Tools -> Maven -> Runner -> JRE
- 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. 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 释放资源,只执行一次 |
浙公网安备 33010602011771号