refactor(test): 重构测试套件结构并优化测试配置
feat(test-suite): 新增测试套件模块,包含API测试客户端和测试配置 fix(api): 修复数据库实体和仓库的删除操作返回值 style(api): 统一数据库表名和字段命名 perf(api): 添加缓存注解提升配置查询性能 test(api): 添加H2测试数据库配置支持 chore: 清理旧的测试文件和脚本
This commit is contained in:
Executable
+181
@@ -0,0 +1,181 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user