mirror of
https://github.com/moshowgame/SpringBootCodeGenerator.git
synced 2025-12-26 05:48:33 +08:00
| 2025.12.08 | 引入单元测试和JaCoCo测试覆盖率,优化代码覆盖率
This commit is contained in:
parent
19db269e92
commit
77936e30a2
19
README.md
19
README.md
@ -37,7 +37,7 @@ Powered by `Moshow郑锴(大狼狗)` 🌟 Might the holy code be with you !
|
|||||||
|
|
||||||
> 🙌 Special thanks to BeJSON 前站长 `三叔` 的慧眼与支持,让项目得以脱颖而出,感恩!
|
> 🙌 Special thanks to BeJSON 前站长 `三叔` 的慧眼与支持,让项目得以脱颖而出,感恩!
|
||||||
|
|
||||||
|
<img src="./newui_version_2.png" width="600px">
|
||||||
|
|
||||||
## 功能特性
|
## 功能特性
|
||||||
|
|
||||||
@ -86,9 +86,18 @@ cd SpringBootCodeGenerator
|
|||||||
mvn clean compile
|
mvn clean compile
|
||||||
# 运行项目
|
# 运行项目
|
||||||
mvn spring-boot:run
|
mvn spring-boot:run
|
||||||
```
|
|
||||||
|
|
||||||
项目启动后访问 http://localhost:1234/generator
|
# 访问项目
|
||||||
|
http://localhost:1234/generator
|
||||||
|
|
||||||
|
# 打包项目(不验证单元测试)
|
||||||
|
mvn clean package -DskipTests
|
||||||
|
|
||||||
|
# 运行测试
|
||||||
|
mvn test
|
||||||
|
# 查看JaCoCo测试覆盖率
|
||||||
|
cd /target/site/jacoco
|
||||||
|
```
|
||||||
|
|
||||||
### 添加新模板
|
### 添加新模板
|
||||||
|
|
||||||
@ -224,8 +233,7 @@ ResultVo.error(message);
|
|||||||
## Stargazers over time
|
## Stargazers over time
|
||||||
[](https://starchart.cc/moshowgame/SpringBootCodeGenerator)
|
[](https://starchart.cc/moshowgame/SpringBootCodeGenerator)
|
||||||
|
|
||||||
2025 NewUI V2版本<br>
|
|
||||||
<img src="./newui_version_2.png">
|
|
||||||
配置模板<br>
|
配置模板<br>
|
||||||
<img src="./codegenerator2.png">
|
<img src="./codegenerator2.png">
|
||||||
网站流量分析-2024<br>
|
网站流量分析-2024<br>
|
||||||
@ -236,6 +244,7 @@ ResultVo.error(message);
|
|||||||
# Update Logs
|
# Update Logs
|
||||||
| 更新日期 | 更新内容 |
|
| 更新日期 | 更新内容 |
|
||||||
|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| 2025.12.08 | 引入单元测试和JaCoCo测试覆盖率,优化代码覆盖率 [UNIT_TEST_DOCUMENT.md](UNIT_TEST_DOCUMENT.md) |
|
||||||
| 2025.12.07 | 后端重构优化 ;目录结构调整! |
|
| 2025.12.07 | 后端重构优化 ;目录结构调整! |
|
||||||
| 2025.09.14 | 优化JSqlParser Engine(DDL Create SQL和Select SQL),适配更高级复杂的SQL |
|
| 2025.09.14 | 优化JSqlParser Engine(DDL Create SQL和Select SQL),适配更高级复杂的SQL |
|
||||||
| 2025.09.13 | JSqlParser Engine全新升级,目前Select SQL模式相对稳定! <br>更新SpringBoot等类库版本,修复漏洞<br>修复CDN问题,切换为staticfile.org |
|
| 2025.09.13 | JSqlParser Engine全新升级,目前Select SQL模式相对稳定! <br>更新SpringBoot等类库版本,修复漏洞<br>修复CDN问题,切换为staticfile.org |
|
||||||
|
|||||||
192
UNIT_TEST_DOCUMENT.md
Normal file
192
UNIT_TEST_DOCUMENT.md
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
# 单元测试重构总结
|
||||||
|
|
||||||
|
## 已完成的单元测试
|
||||||
|
|
||||||
|
基于最新的项目代码,我已经为以下Service和Controller类生成了完整的单元测试:
|
||||||
|
|
||||||
|
### 1. Service层测试
|
||||||
|
|
||||||
|
#### CodeGenServiceTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/service/CodeGenServiceTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试生成代码成功场景
|
||||||
|
- ✅ 测试表结构信息为空的错误处理
|
||||||
|
- ✅ 测试表结构信息为null的错误处理
|
||||||
|
- ✅ 测试生成代码异常处理
|
||||||
|
- ✅ 测试JSON模式解析
|
||||||
|
- ✅ 测试INSERT SQL模式解析
|
||||||
|
- ✅ 测试根据参数获取结果
|
||||||
|
- ✅ 测试模板为空的情况
|
||||||
|
|
||||||
|
#### TemplateServiceTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/service/TemplateServiceTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试获取所有模板配置成功
|
||||||
|
- ✅ 测试模板配置缓存机制
|
||||||
|
- ✅ 测试模板配置JSON解析
|
||||||
|
- ✅ 测试无效JSON异常处理
|
||||||
|
|
||||||
|
#### SqlParserServiceTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/service/parser/SqlParserServiceTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试解析Select SQL
|
||||||
|
- ✅ 测试解析Create SQL
|
||||||
|
- ✅ 测试处理表结构到类信息
|
||||||
|
- ✅ 测试正则表达式解析表结构
|
||||||
|
- ✅ 测试解析Insert SQL
|
||||||
|
- ✅ 测试空SQL字符串异常处理
|
||||||
|
- ✅ 测试null SQL字符串异常处理
|
||||||
|
- ✅ 测试无效SQL语法异常处理
|
||||||
|
- ✅ 测试复杂Select SQL解析
|
||||||
|
- ✅ 测试带别名的Select SQL
|
||||||
|
- ✅ 测试Insert SQL正则表达式解析
|
||||||
|
|
||||||
|
#### JsonParserServiceTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/service/parser/JsonParserServiceTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试解析简单JSON
|
||||||
|
- ✅ 测试解析复杂嵌套JSON
|
||||||
|
- ✅ 测试解析空JSON
|
||||||
|
- ✅ 测试null JSON字符串处理
|
||||||
|
- ✅ 测试空字符串JSON处理
|
||||||
|
- ✅ 测试无效JSON格式处理
|
||||||
|
- ✅ 测试JSON数组解析
|
||||||
|
- ✅ 测试不同数据类型字段解析
|
||||||
|
|
||||||
|
### 2. Controller层测试
|
||||||
|
|
||||||
|
#### CodeGenControllerTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/controller/CodeGenControllerTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试生成代码接口成功
|
||||||
|
- ✅ 测试生成代码接口返回错误
|
||||||
|
- ✅ 测试参数为空的情况
|
||||||
|
- ✅ 测试无效JSON请求
|
||||||
|
- ✅ 测试缺少Content-Type
|
||||||
|
- ✅ 测试服务层异常处理
|
||||||
|
- ✅ 测试空tableSql验证
|
||||||
|
- ✅ 测试null tableSql验证
|
||||||
|
- ✅ 测试null options验证
|
||||||
|
- ✅ 测试复杂参数处理
|
||||||
|
|
||||||
|
#### PageControllerTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/controller/PageControllerTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试默认页面路由
|
||||||
|
- ✅ 测试首页路由
|
||||||
|
- ✅ 测试ModelAndView对象
|
||||||
|
- ✅ 测试ValueUtil注入
|
||||||
|
|
||||||
|
#### TemplateControllerTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/controller/TemplateControllerTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试获取所有模板成功
|
||||||
|
- ✅ 测试返回空数组
|
||||||
|
- ✅ 测试服务异常处理
|
||||||
|
- ✅ 测试IO异常处理
|
||||||
|
- ✅ 测试直接调用方法
|
||||||
|
- ✅ 测试错误请求路径
|
||||||
|
- ✅ 测试错误的HTTP方法
|
||||||
|
|
||||||
|
### 3. 工具类测试
|
||||||
|
|
||||||
|
#### ResultVoTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/vo/ResultVoTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试默认构造函数
|
||||||
|
- ✅ 测试ok静态方法
|
||||||
|
- ✅ 测试带数据的ok方法
|
||||||
|
- ✅ 测试error方法
|
||||||
|
- ✅ 测试带错误码的error方法
|
||||||
|
- ✅ 测试put方法
|
||||||
|
- ✅ 测试链式调用
|
||||||
|
- ✅ 测试size、containsKey等Map方法
|
||||||
|
- ✅ 测试remove和clear方法
|
||||||
|
|
||||||
|
#### MapUtilTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/util/MapUtilTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试getString方法
|
||||||
|
- ✅ 测试getInteger方法
|
||||||
|
- ✅ 测试getBoolean方法
|
||||||
|
- ✅ 测试异常处理
|
||||||
|
- ✅ 测试空Map和null Map
|
||||||
|
|
||||||
|
#### StringUtilsPlusTest
|
||||||
|
- **位置**: `src/test/java/com/softdev/system/generator/util/StringUtilsPlusTest.java`
|
||||||
|
- **测试内容**:
|
||||||
|
- ✅ 测试字符串工具类各种方法
|
||||||
|
- ✅ 已修复为适配实际存在的方法
|
||||||
|
|
||||||
|
## 测试框架配置
|
||||||
|
|
||||||
|
### JUnit 5 + Mockito
|
||||||
|
项目已升级到:
|
||||||
|
- **JUnit 5 (Jupiter)**: 现代化测试框架
|
||||||
|
- **Mockito**: 强大的Mock框架
|
||||||
|
- **Spring Boot Test**: Spring集成测试支持
|
||||||
|
|
||||||
|
### 测试特性
|
||||||
|
- ✅ 使用Mockito进行依赖注入Mock
|
||||||
|
- ✅ 静态方法Mock(MockedStatic)
|
||||||
|
- ✅ Spring MVC测试(MockMvc)
|
||||||
|
- ✅ 完整的异常场景覆盖
|
||||||
|
- ✅ 边界条件测试
|
||||||
|
- ✅ 中文测试名称(@DisplayName)
|
||||||
|
|
||||||
|
## 代码质量
|
||||||
|
|
||||||
|
### 测试覆盖率
|
||||||
|
- Service层:高覆盖率,包含所有公共方法
|
||||||
|
- Controller层:完整HTTP接口测试
|
||||||
|
- 工具类:核心方法全覆盖
|
||||||
|
|
||||||
|
### 测试质量
|
||||||
|
- ✅ 遵循AAA模式(Arrange-Act-Assert)
|
||||||
|
- ✅ 清晰的测试命名
|
||||||
|
- ✅ 合理的测试数据准备
|
||||||
|
- ✅ 完善的断言验证
|
||||||
|
|
||||||
|
## 运行测试
|
||||||
|
|
||||||
|
### 单独运行测试类
|
||||||
|
```bash
|
||||||
|
mvn test -Dtest=CodeGenServiceTest
|
||||||
|
mvn test -Dtest=CodeGenControllerTest
|
||||||
|
mvn test -Dtest=TemplateServiceTest
|
||||||
|
```
|
||||||
|
|
||||||
|
### 运行所有新增测试
|
||||||
|
```bash
|
||||||
|
mvn test -Dtest=CodeGenServiceTest,TemplateServiceTest,CodeGenControllerTest,PageControllerTest,TemplateControllerTest,SqlParserServiceTest,JsonParserServiceTest,StringUtilsPlusTest,MapUtilTest,ResultVoTest
|
||||||
|
```
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
```
|
||||||
|
src/test/java/com/softdev/system/generator/
|
||||||
|
├── controller/
|
||||||
|
│ ├── CodeGenControllerTest.java
|
||||||
|
│ ├── PageControllerTest.java
|
||||||
|
│ └── TemplateControllerTest.java
|
||||||
|
├── service/
|
||||||
|
│ ├── CodeGenServiceTest.java
|
||||||
|
│ └── TemplateServiceTest.java
|
||||||
|
├── service/parser/
|
||||||
|
│ ├── SqlParserServiceTest.java
|
||||||
|
│ └── JsonParserServiceTest.java
|
||||||
|
├── util/
|
||||||
|
│ ├── MapUtilTest.java
|
||||||
|
│ └── StringUtilsPlusTest.java
|
||||||
|
└── vo/
|
||||||
|
└── ResultVoTest.java
|
||||||
|
```
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. **依赖兼容性**: 所有测试已适配项目的实际依赖
|
||||||
|
2. **方法签名**: 测试方法与实际实现类的方法签名完全匹配
|
||||||
|
3. **异常处理**: 包含了完整的异常场景测试
|
||||||
|
4. **Mock策略**: 合理使用Mock避免外部依赖影响
|
||||||
|
|
||||||
|
这些单元测试为项目的核心业务逻辑提供了可靠的验证,确保代码质量和功能正确性。
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 228 KiB |
Loading…
x
Reference in New Issue
Block a user