Files
Alicho/tests/scripts/run_tests.sh
2025-10-28 10:27:49 +08:00

114 lines
3.7 KiB
Bash

#!/bin/bash
# ================================================================================================
# Audio Backend - 测试运行脚本
# ================================================================================================
# 描述: 运行所有类型的测试(单元测试、集成测试、性能测试)
# ================================================================================================
# 设置颜色输出
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # 无颜色
# 脚本所在的目录路径
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
# 项目根目录
ROOT_DIR="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")"
# 构建目录
BUILD_DIR="$ROOT_DIR/build"
# 测试结果目录
TEST_RESULTS_DIR="$ROOT_DIR/test-results"
# 打印脚本信息
echo -e "${BLUE}=========================================================${NC}"
echo -e "${BLUE} 音频后端测试运行脚本 ${NC}"
echo -e "${BLUE}=========================================================${NC}"
echo -e "${YELLOW}项目根目录: ${ROOT_DIR}${NC}"
echo -e "${YELLOW}构建目录: ${BUILD_DIR}${NC}"
echo -e "${YELLOW}测试结果录: ${TEST_RESULTS_DIR}${NC}"
echo ""
# 确保测试结果目录存在
mkdir -p "$TEST_RESULTS_DIR"
# 检查构建目录是否存在
if [ ! -d "$BUILD_DIR" ]; then
echo -e "${RED}错误: 构建目录不存在。请先运行构建脚本。${NC}"
exit 1
fi
# 准备测试环境
echo -e "${BLUE}准备测试环境...${NC}"
"$SCRIPT_DIR/prepare_test_env.sh"
if [ $? -ne 0 ]; then
echo -e "${RED}准备测试环境失败${NC}"
exit 1
fi
echo -e "${GREEN}测试环境准备完成${NC}"
echo ""
# 定义测试运行函数
run_test_suite() {
local suite_name=$1
local script_name=$2
echo -e "${BLUE}开始运行${suite_name}...${NC}"
"$SCRIPT_DIR/$script_name"
local result=$?
if [ $result -eq 0 ]; then
echo -e "${GREEN}${suite_name}通过${NC}"
return 0
else
echo -e "${RED}${suite_name}失败 (退出码: $result)${NC}"
return 1
fi
}
# 运行单元测试
unit_tests_result=0
run_test_suite "单元测试" "run_unit_tests.sh"
unit_tests_result=$?
echo ""
# 运行集成测试
integration_tests_result=0
run_test_suite "集成测试" "run_integration_tests.sh"
integration_tests_result=$?
echo ""
# 运行性能测试
performance_tests_result=0
run_test_suite "性能测试" "run_performance_tests.sh"
performance_tests_result=$?
echo ""
# 生成覆盖率报告
echo -e "${BLUE}生成测试覆盖率报告...${NC}"
"$SCRIPT_DIR/generate_coverage.sh"
if [ $? -ne 0 ]; then
echo -e "${YELLOW}警告: 覆盖率报告生成失败${NC}"
else
echo -e "${GREEN}覆盖率报告生成完成${NC}"
fi
echo ""
# 测试结果汇总
echo -e "${BLUE}=========================================================${NC}"
echo -e "${BLUE} 测试结果汇总 ${NC}"
echo -e "${BLUE}=========================================================${NC}"
echo -e "单元测试: $([ $unit_tests_result -eq 0 ] && echo -e "${GREEN}通过${NC}" || echo -e "${RED}失败${NC}")"
echo -e "集成测试: $([ $integration_tests_result -eq 0 ] && echo -e "${GREEN}通过${NC}" || echo -e "${RED}失败${NC}")"
echo -e "性能测试: $([ $performance_tests_result -eq 0 ] && echo -e "${GREEN}通过${NC}" || echo -e "${RED}失败${NC}")"
echo ""
# 整体测试结果
if [ $unit_tests_result -eq 0 ] && [ $integration_tests_result -eq 0 ] && [ $performance_tests_result -eq 0 ]; then
echo -e "${GREEN}所有测试通过!${NC}"
exit 0
else
echo -e "${RED}测试失败!${NC}"
exit 1
fi