diff --git a/README.md b/README.md index e01ea41..fc03296 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Powered by `Moshow郑锴(大狼狗)` 🌟 Might the holy code be with you ! > 🙌 Special thanks to BeJSON 前站长 `三叔` 的慧眼与支持,让项目得以脱颖而出,感恩! - + ## 功能特性 @@ -86,9 +86,18 @@ cd SpringBootCodeGenerator mvn clean compile # 运行项目 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.svg?variant=adaptive)](https://starchart.cc/moshowgame/SpringBootCodeGenerator) -2025 NewUI V2版本
- + 配置模板
网站流量分析-2024
@@ -236,6 +244,7 @@ ResultVo.error(message); # Update Logs | 更新日期 | 更新内容 | |:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 2025.12.08 | 引入单元测试和JaCoCo测试覆盖率,优化代码覆盖率 [UNIT_TEST_DOCUMENT.md](UNIT_TEST_DOCUMENT.md) | | 2025.12.07 | 后端重构优化![REFACTORING_DOCUMENT.md](REFACTORING_DOCUMENT.md) ;目录结构调整! | | 2025.09.14 | 优化JSqlParser Engine(DDL Create SQL和Select SQL),适配更高级复杂的SQL | | 2025.09.13 | JSqlParser Engine全新升级,目前Select SQL模式相对稳定!
更新SpringBoot等类库版本,修复漏洞
修复CDN问题,切换为staticfile.org | diff --git a/UNIT_TEST_DOCUMENT.md b/UNIT_TEST_DOCUMENT.md new file mode 100644 index 0000000..1aee1cd --- /dev/null +++ b/UNIT_TEST_DOCUMENT.md @@ -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避免外部依赖影响 + +这些单元测试为项目的核心业务逻辑提供了可靠的验证,确保代码质量和功能正确性。 \ No newline at end of file diff --git a/newui_version_2.png b/newui_version_2.png index ac254c2..0fbba80 100644 Binary files a/newui_version_2.png and b/newui_version_2.png differ