#!/bin/bash # 测试执行汇总脚本 # 用于在本地运行所有测试并生成汇总报告 set -e echo "=========================================" echo "Novalon 管理系统 - 测试执行汇总" echo "=========================================" echo "" # 颜色定义 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 记录开始时间 START_TIME=$(date +%s) # 1. 前端单元测试 echo -e "${YELLOW}[1/5] 运行前端单元测试...${NC}" cd novalon-manage-web if npm run test -- src/test; then echo -e "${GREEN}✓ 前端单元测试通过${NC}" FRONTEND_UNIT_STATUS="PASS" else echo -e "${RED}✗ 前端单元测试失败${NC}" FRONTEND_UNIT_STATUS="FAIL" fi cd .. # 2. 后端单元测试 - manage-sys echo "" echo -e "${YELLOW}[2/5] 运行后端单元测试 (manage-sys)...${NC}" cd novalon-manage-api/manage-sys if mvn test -Dtest="*ServiceTest,*HandlerTest" -q; then echo -e "${GREEN}✓ 后端单元测试 (manage-sys) 通过${NC}" BACKEND_SYS_STATUS="PASS" else echo -e "${RED}✗ 后端单元测试 (manage-sys) 失败${NC}" BACKEND_SYS_STATUS="FAIL" fi cd ../.. # 3. 后端单元测试 - manage-file echo "" echo -e "${YELLOW}[3/5] 运行后端单元测试 (manage-file)...${NC}" cd novalon-manage-api/manage-file if mvn test -Dtest="*ServiceTest,*HandlerTest" -q; then echo -e "${GREEN}✓ 后端单元测试 (manage-file) 通过${NC}" BACKEND_FILE_STATUS="PASS" else echo -e "${RED}✗ 后端单元测试 (manage-file) 失败${NC}" BACKEND_FILE_STATUS="FAIL" fi cd ../.. # 4. 前端覆盖率报告 echo "" echo -e "${YELLOW}[4/5] 生成前端测试覆盖率报告...${NC}" cd novalon-manage-web npm run test:coverage -- src/test cd .. # 5. 后端覆盖率报告 echo "" echo -e "${YELLOW}[5/5] 生成后端测试覆盖率报告...${NC}" cd novalon-manage-api/manage-sys mvn jacoco:report -q cd ../.. # 计算执行时间 END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) # 生成汇总报告 echo "" echo "=========================================" echo "测试执行汇总报告" echo "=========================================" echo "执行时间: ${DURATION}秒" echo "" echo "前端单元测试: $FRONTEND_UNIT_STATUS" echo "后端单元测试 (manage-sys): $BACKEND_SYS_STATUS" echo "后端单元测试 (manage-file): $BACKEND_FILE_STATUS" echo "" echo "覆盖率报告位置:" echo " - 前端: novalon-manage-web/coverage/" echo " - 后端 (manage-sys): novalon-manage-api/manage-sys/target/site/jacoco/index.html" echo " - 后端 (manage-file): novalon-manage-api/manage-file/target/site/jacoco/index.html" echo "=========================================" # 检查是否所有测试都通过 if [ "$FRONTEND_UNIT_STATUS" = "PASS" ] && [ "$BACKEND_SYS_STATUS" = "PASS" ] && [ "$BACKEND_FILE_STATUS" = "PASS" ]; then echo -e "${GREEN}所有测试通过!${NC}" exit 0 else echo -e "${RED}部分测试失败,请查看详细日志${NC}" exit 1 fi