Files
novalon-manage-system/scripts/run-tests.sh
T
张翔 1e3dc11d59 refactor(test): 重构测试套件结构并优化测试配置
feat(test-suite): 新增测试套件模块,包含API测试客户端和测试配置
fix(api): 修复数据库实体和仓库的删除操作返回值
style(api): 统一数据库表名和字段命名
perf(api): 添加缓存注解提升配置查询性能
test(api): 添加H2测试数据库配置支持
chore: 清理旧的测试文件和脚本
2026-04-01 20:57:24 +08:00

182 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
set -e
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
show_usage() {
echo "========================================="
echo "Novalon 管理系统 - 统一测试脚本"
echo "========================================="
echo ""
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " all 运行所有测试(前端+后端+E2E)"
echo " unit 运行单元测试(前端+后端)"
echo " e2e 运行E2E测试"
echo " api 运行API集成测试"
echo " perf 运行性能测试"
echo " coverage 生成测试覆盖率报告"
echo " help 显示此帮助信息"
echo ""
echo "示例:"
echo " $0 all # 运行所有测试"
echo " $0 unit # 仅运行单元测试"
echo " $0 e2e # 仅运行E2E测试"
echo ""
}
run_frontend_unit_tests() {
echo -e "${YELLOW}[前端] 运行单元测试...${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 ..
}
run_backend_unit_tests() {
echo -e "${YELLOW}[后端] 运行单元测试...${NC}"
cd novalon-manage-api/manage-sys
if mvn test -Dtest="*ServiceTest,*HandlerTest" -q; then
echo -e "${GREEN}✓ 后端单元测试通过${NC}"
BACKEND_UNIT_STATUS="PASS"
else
echo -e "${RED}✗ 后端单元测试失败${NC}"
BACKEND_UNIT_STATUS="FAIL"
fi
cd ../..
}
run_e2e_tests() {
echo -e "${YELLOW}[E2E] 运行端到端测试...${NC}"
cd novalon-manage-web
if npx playwright test; then
echo -e "${GREEN}✓ E2E测试通过${NC}"
E2E_STATUS="PASS"
else
echo -e "${RED}✗ E2E测试失败${NC}"
E2E_STATUS="FAIL"
fi
cd ..
}
run_api_tests() {
echo -e "${YELLOW}[API] 运行API集成测试...${NC}"
cd test-suite
if python -m pytest tests/integration tests/security -v --tb=short; then
echo -e "${GREEN}✓ API集成测试通过${NC}"
API_STATUS="PASS"
else
echo -e "${RED}✗ API集成测试失败${NC}"
API_STATUS="FAIL"
fi
cd ..
}
run_performance_tests() {
echo -e "${YELLOW}[性能] 运行性能测试...${NC}"
cd test-suite
if python -m pytest tests/performance -v --tb=short; then
echo -e "${GREEN}✓ 性能测试通过${NC}"
PERF_STATUS="PASS"
else
echo -e "${RED}✗ 性能测试失败${NC}"
PERF_STATUS="FAIL"
fi
cd ..
}
generate_coverage_report() {
echo -e "${YELLOW}[覆盖率] 生成测试覆盖率报告...${NC}"
echo "生成前端覆盖率报告..."
cd novalon-manage-web
npm run test:coverage -- src/test
cd ..
echo "生成后端覆盖率报告..."
cd novalon-manage-api/manage-sys
mvn jacoco:report -q
cd ../..
echo -e "${GREEN}✓ 覆盖率报告生成完成${NC}"
echo " - 前端: novalon-manage-web/coverage/"
echo " - 后端: novalon-manage-api/manage-sys/target/site/jacoco/index.html"
}
run_all_tests() {
START_TIME=$(date +%s)
run_frontend_unit_tests
echo ""
run_backend_unit_tests
echo ""
run_api_tests
echo ""
run_e2e_tests
echo ""
generate_coverage_report
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
echo ""
echo "========================================="
echo "测试执行汇总报告"
echo "========================================="
echo "执行时间: ${DURATION}"
echo ""
echo "前端单元测试: ${FRONTEND_UNIT_STATUS:-SKIP}"
echo "后端单元测试: ${BACKEND_UNIT_STATUS:-SKIP}"
echo "API集成测试: ${API_STATUS:-SKIP}"
echo "E2E测试: ${E2E_STATUS:-SKIP}"
echo "========================================="
if [ "${FRONTEND_UNIT_STATUS}" = "PASS" ] && \
[ "${BACKEND_UNIT_STATUS}" = "PASS" ] && \
[ "${API_STATUS}" = "PASS" ] && \
[ "${E2E_STATUS}" = "PASS" ]; then
echo -e "${GREEN}所有测试通过!${NC}"
exit 0
else
echo -e "${RED}部分测试失败,请查看详细日志${NC}"
exit 1
fi
}
case "${1:-help}" in
all)
run_all_tests
;;
unit)
run_frontend_unit_tests
echo ""
run_backend_unit_tests
;;
e2e)
run_e2e_tests
;;
api)
run_api_tests
;;
perf)
run_performance_tests
;;
coverage)
generate_coverage_report
;;
help|*)
show_usage
;;
esac