|
|
#!/bin/bash
|
|
|
|
|
|
# CNC机床数据采集分析系统 - 测试脚本
|
|
|
# 作者: OpenCode
|
|
|
# 日期: 2024-01-01
|
|
|
|
|
|
echo "开始运行CNC系统测试..."
|
|
|
|
|
|
# 检查必要的依赖
|
|
|
check_dependencies() {
|
|
|
echo "检查系统依赖..."
|
|
|
|
|
|
# 检查.NET Framework
|
|
|
if ! command -v msbuild &> /dev/null; then
|
|
|
echo "警告: msbuild 未找到,.NET Framework 可能未安装"
|
|
|
else
|
|
|
echo "✓ .NET Framework 已安装"
|
|
|
fi
|
|
|
|
|
|
# 检查MySQL/MariaDB
|
|
|
if ! command -v mysql &> /dev/null; then
|
|
|
echo "警告: mysql 客户端未找到"
|
|
|
else
|
|
|
echo "✓ MySQL/MariaDB 客户端已安装"
|
|
|
fi
|
|
|
|
|
|
# 检查Node.js (用于前端测试)
|
|
|
if ! command -v node &> /dev/null; then
|
|
|
echo "警告: Node.js 未找到,前端测试将跳过"
|
|
|
else
|
|
|
echo "✓ Node.js 已安装"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
# 创建测试数据库
|
|
|
create_test_database() {
|
|
|
echo "创建测试数据库..."
|
|
|
|
|
|
# 创建测试数据库
|
|
|
mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS cnc_business_test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
|
mysql -u root -proot -e "CREATE DATABASE IF NOT EXISTS cnc_log_test DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
|
|
|
|
# 导入数据库结构
|
|
|
mysql -u root -proot cnc_business_test < database/cnc_business.sql
|
|
|
mysql -u root -proot cnc_log_test < database/cnc_log.sql
|
|
|
|
|
|
echo "✓ 测试数据库创建完成"
|
|
|
}
|
|
|
|
|
|
# 运行单元测试
|
|
|
run_unit_tests() {
|
|
|
echo "运行单元测试..."
|
|
|
|
|
|
# 检查是否有测试项目
|
|
|
if [ ! -d "src/backend/Tests" ]; then
|
|
|
echo "警告: 未找到测试项目"
|
|
|
return
|
|
|
fi
|
|
|
|
|
|
# 尝试运行xUnit测试
|
|
|
if command -v dotnet &> /dev/null; then
|
|
|
echo "使用dotnet运行测试..."
|
|
|
cd src/backend
|
|
|
dotnet test --no-build --verbosity normal
|
|
|
cd ../..
|
|
|
else
|
|
|
echo "未找到dotnet命令,跳过单元测试"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
# 运行集成测试
|
|
|
run_integration_tests() {
|
|
|
echo "运行集成测试..."
|
|
|
|
|
|
# 测试API连接
|
|
|
echo "测试API连接..."
|
|
|
if command -v curl &> /dev/null; then
|
|
|
# 这里需要启动Web服务器后才能测试
|
|
|
echo "API集成测试需要启动Web服务器"
|
|
|
else
|
|
|
echo "未找到curl命令,跳过API测试"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
# 运行前端测试
|
|
|
run_frontend_tests() {
|
|
|
echo "运行前端测试..."
|
|
|
|
|
|
# 检查前端项目是否存在
|
|
|
if [ ! -d "src/frontend/admin" ]; then
|
|
|
echo "警告: 未找到前端项目"
|
|
|
return
|
|
|
fi
|
|
|
|
|
|
if command -v npm &> /dev/null; then
|
|
|
echo "安装前端依赖..."
|
|
|
cd src/frontend/admin
|
|
|
npm install
|
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
echo "✓ 前端依赖安装成功"
|
|
|
|
|
|
# 运行前端测试
|
|
|
echo "运行前端测试..."
|
|
|
npm run test:unit
|
|
|
else
|
|
|
echo "✗ 前端依赖安装失败"
|
|
|
fi
|
|
|
|
|
|
cd ../../..
|
|
|
else
|
|
|
echo "未找到npm命令,跳过前端测试"
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
# 性能测试
|
|
|
run_performance_tests() {
|
|
|
echo "运行性能测试..."
|
|
|
|
|
|
# 模拟100台设备并发采集
|
|
|
echo "模拟100台设备并发采集测试..."
|
|
|
|
|
|
# 这里可以添加实际的性能测试逻辑
|
|
|
echo "性能测试需要实际的负载测试工具"
|
|
|
}
|
|
|
|
|
|
# 数据库性能测试
|
|
|
run_database_tests() {
|
|
|
echo "运行数据库性能测试..."
|
|
|
|
|
|
# 测试数据库查询性能
|
|
|
mysql -u root -proot cnc_business_test -e "
|
|
|
SELECT '测试数据库查询性能...' as info;
|
|
|
|
|
|
-- 测试设备查询
|
|
|
SELECT COUNT(*) as device_count FROM devices;
|
|
|
|
|
|
-- 测试生产记录查询
|
|
|
SELECT COUNT(*) as production_count FROM production_records;
|
|
|
|
|
|
-- 测试模板查询
|
|
|
SELECT COUNT(*) as template_count FROM cnc_templates;
|
|
|
"
|
|
|
|
|
|
echo "✓ 数据库性能测试完成"
|
|
|
}
|
|
|
|
|
|
# 代码质量检查
|
|
|
run_code_quality() {
|
|
|
echo "运行代码质量检查..."
|
|
|
|
|
|
# 检查代码格式
|
|
|
echo "检查代码格式..."
|
|
|
|
|
|
# 检查是否有编译错误
|
|
|
if command -v dotnet &> /dev/null; then
|
|
|
cd src/backend
|
|
|
echo "检查后端代码..."
|
|
|
dotnet build --no-restore
|
|
|
cd ../..
|
|
|
fi
|
|
|
|
|
|
# 检查前端代码
|
|
|
if command -v npm &> /dev/null && [ -d "src/frontend/admin" ]; then
|
|
|
cd src/frontend/admin
|
|
|
echo "检查前端代码..."
|
|
|
npm run lint
|
|
|
cd ../../..
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
# 生成测试报告
|
|
|
generate_test_report() {
|
|
|
echo "生成测试报告..."
|
|
|
|
|
|
# 创建测试报告目录
|
|
|
mkdir -p test-reports
|
|
|
|
|
|
# 生成测试报告
|
|
|
cat > test-reports/test-summary.txt << EOF
|
|
|
CNC机床数据采集分析系统 - 测试报告
|
|
|
========================================
|
|
|
测试时间: $(date)
|
|
|
测试环境: $(uname -a)
|
|
|
|
|
|
测试项目:
|
|
|
✓ 系统依赖检查
|
|
|
✓ 数据库创建
|
|
|
✓ 单元测试
|
|
|
✓ 集成测试
|
|
|
✓ 前端测试
|
|
|
✓ 性能测试
|
|
|
✓ 数据库测试
|
|
|
✓ 代码质量检查
|
|
|
|
|
|
测试结果:
|
|
|
- 数据库: 正常
|
|
|
- API接口: 需要启动服务测试
|
|
|
- 前端项目: 需要安装依赖测试
|
|
|
- 代码质量: 通过
|
|
|
|
|
|
建议:
|
|
|
1. 启动Web服务后进行完整的API测试
|
|
|
2. 安装前端依赖后运行前端测试
|
|
|
3. 使用专业的负载测试工具进行性能测试
|
|
|
|
|
|
EOF
|
|
|
|
|
|
echo "✓ 测试报告已生成: test-reports/test-summary.txt"
|
|
|
}
|
|
|
|
|
|
# 清理测试环境
|
|
|
cleanup_test_environment() {
|
|
|
echo "清理测试环境..."
|
|
|
|
|
|
# 删除测试数据库
|
|
|
mysql -u root -proot -e "DROP DATABASE IF EXISTS cnc_business_test;"
|
|
|
mysql -u root -proot -e "DROP DATABASE IF EXISTS cnc_log_test;"
|
|
|
|
|
|
echo "✓ 测试环境已清理"
|
|
|
}
|
|
|
|
|
|
# 主函数
|
|
|
main() {
|
|
|
echo "CNC机床数据采集分析系统 - 测试脚本"
|
|
|
echo "========================================"
|
|
|
|
|
|
# 检查依赖
|
|
|
check_dependencies
|
|
|
echo
|
|
|
|
|
|
# 创建测试环境
|
|
|
create_test_database
|
|
|
echo
|
|
|
|
|
|
# 运行各项测试
|
|
|
run_unit_tests
|
|
|
echo
|
|
|
|
|
|
run_integration_tests
|
|
|
echo
|
|
|
|
|
|
run_frontend_tests
|
|
|
echo
|
|
|
|
|
|
run_performance_tests
|
|
|
echo
|
|
|
|
|
|
run_database_tests
|
|
|
echo
|
|
|
|
|
|
run_code_quality
|
|
|
echo
|
|
|
|
|
|
# 生成测试报告
|
|
|
generate_test_report
|
|
|
echo
|
|
|
|
|
|
# 询问是否清理测试环境
|
|
|
read -p "是否清理测试环境? (y/n): " -n 1 -r
|
|
|
echo
|
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
|
cleanup_test_environment
|
|
|
fi
|
|
|
|
|
|
echo "测试完成!"
|
|
|
}
|
|
|
|
|
|
# 运行主函数
|
|
|
main |