mixvideo-v2/apps/desktop/scripts/run-tests.sh

148 lines
3.6 KiB
Bash

#!/bin/bash
# 绑定管理功能测试运行脚本
# 遵循 Tauri 开发规范的测试执行流程
set -e
echo "🧪 开始运行绑定管理功能测试..."
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 函数:打印带颜色的消息
print_message() {
local color=$1
local message=$2
echo -e "${color}${message}${NC}"
}
# 函数:运行命令并检查结果
run_command() {
local description=$1
local command=$2
print_message $BLUE "📋 $description"
if eval $command; then
print_message $GREEN "$description - 成功"
return 0
else
print_message $RED "$description - 失败"
return 1
fi
}
# 检查依赖
print_message $YELLOW "🔍 检查测试环境..."
# 检查 Rust 环境
if ! command -v cargo &> /dev/null; then
print_message $RED "❌ Cargo 未安装,请先安装 Rust"
exit 1
fi
# 检查 Node.js 环境
if ! command -v node &> /dev/null; then
print_message $RED "❌ Node.js 未安装"
exit 1
fi
# 检查 pnpm
if ! command -v pnpm &> /dev/null; then
print_message $RED "❌ pnpm 未安装"
exit 1
fi
print_message $GREEN "✅ 测试环境检查完成"
# 切换到项目目录
cd "$(dirname "$0")/.."
# 运行后端测试
print_message $YELLOW "🦀 运行 Rust 后端测试..."
# 运行项目-模板绑定测试
run_command "项目-模板绑定单元测试" "cargo test project_template_binding_tests --lib"
# 运行素材-模特绑定测试
run_command "素材-模特绑定单元测试" "cargo test material_model_binding_tests --lib"
# 运行集成测试
run_command "绑定管理集成测试" "cargo test integration::binding_management_integration_tests --lib"
# 运行所有后端测试
run_command "所有后端测试" "cargo test --lib"
# 运行前端测试
print_message $YELLOW "⚛️ 运行前端测试..."
# 安装依赖(如果需要)
if [ ! -d "node_modules" ]; then
run_command "安装前端依赖" "pnpm install"
fi
# 运行前端单元测试
run_command "前端组件测试" "pnpm test:unit"
# 运行前端集成测试
run_command "前端集成测试" "pnpm test:integration"
# 运行所有前端测试
run_command "所有前端测试" "pnpm test"
# 生成测试覆盖率报告
print_message $YELLOW "📊 生成测试覆盖率报告..."
# 后端覆盖率
run_command "后端测试覆盖率" "cargo tarpaulin --out Html --output-dir target/coverage"
# 前端覆盖率
run_command "前端测试覆盖率" "pnpm test:coverage"
# 运行性能测试
print_message $YELLOW "⚡ 运行性能测试..."
# 后端性能测试
run_command "后端性能测试" "cargo bench"
# 前端性能测试
run_command "前端性能测试" "pnpm test:performance"
# 运行端到端测试
print_message $YELLOW "🔄 运行端到端测试..."
# 构建应用
run_command "构建应用" "pnpm tauri build"
# 运行 E2E 测试
run_command "端到端测试" "pnpm test:e2e"
# 测试总结
print_message $GREEN "🎉 所有测试完成!"
# 显示测试结果摘要
echo ""
print_message $BLUE "📈 测试结果摘要:"
echo " - 项目-模板绑定功能: ✅"
echo " - 素材-模特绑定功能: ✅"
echo " - 前端组件测试: ✅"
echo " - 集成测试: ✅"
echo " - 性能测试: ✅"
echo " - 端到端测试: ✅"
# 显示覆盖率信息
if [ -f "target/coverage/tarpaulin-report.html" ]; then
print_message $BLUE "📊 后端覆盖率报告: target/coverage/tarpaulin-report.html"
fi
if [ -f "coverage/index.html" ]; then
print_message $BLUE "📊 前端覆盖率报告: coverage/index.html"
fi
print_message $GREEN "✨ 绑定管理功能测试全部通过!"