@echo off REM ================================================================================================ REM Audio Backend - 集成测试运行脚本 (Windows) REM ================================================================================================ REM 描述: 运行项目中的所有集成测试 REM ================================================================================================ setlocal EnableDelayedExpansion REM 设置颜色输出 set "GREEN=[92m" set "RED=[91m" set "YELLOW=[93m" set "BLUE=[94m" set "NC=[0m" REM 脚本所在的目录路径 set "SCRIPT_DIR=%~dp0" REM 项目根目录 for %%i in ("%SCRIPT_DIR%\..\..\..\") do set "ROOT_DIR=%%~fi" REM 构建目录 set "BUILD_DIR=%ROOT_DIR%\build" REM 测试结果目录 set "TEST_RESULTS_DIR=%ROOT_DIR%\test-results" REM 集成测试结果目录 set "INTEGRATION_TEST_RESULTS_DIR=%TEST_RESULTS_DIR%\integration" REM 测试可执行文件目录 set "TEST_BIN_DIR=%BUILD_DIR%\bin\tests" REM 打印脚本信息 echo %BLUE%=========================================================%NC% echo %BLUE% 音频后端集成测试运行脚本 %NC% echo %BLUE%=========================================================%NC% echo %YELLOW%项目根目录: %ROOT_DIR%%NC% echo %YELLOW%测试结果目: %INTEGRATION_TEST_RESULTS_DIR%%NC% echo. REM 确保测试结果目录存在 if not exist "%INTEGRATION_TEST_RESULTS_DIR%" mkdir "%INTEGRATION_TEST_RESULTS_DIR%" REM 检查测试目录是否存在 if not exist "%TEST_BIN_DIR%" ( echo %RED%错误: 测试可执行文件目录不存在。请先构建项目。%NC% exit /b 1 ) REM 收集所有集成测试可执行文件 set "INTEGRATION_TEST_COUNT=0" set "INTEGRATION_TESTS=" if exist "%TEST_BIN_DIR%\integration\" ( for %%f in ("%TEST_BIN_DIR%\integration\*.exe") do ( if exist "%%f" ( set /a INTEGRATION_TEST_COUNT+=1 set "INTEGRATION_TESTS=!INTEGRATION_TESTS! %%f" ) ) ) REM 如果没有找到集成测试,显示警告并退出 if %INTEGRATION_TEST_COUNT% equ 0 ( echo %YELLOW%警告: 未找到集成测试可执行文件。%NC% exit /b 0 ) echo %BLUE%找到 %INTEGRATION_TEST_COUNT% 个集成测试%NC% echo. REM 准备测试环境 echo %BLUE%准备集成测试环境...%NC% set "RESOURCES_DIR=%ROOT_DIR%\tests\integration\resources" if not exist "%RESOURCES_DIR%" ( mkdir "%RESOURCES_DIR%" echo 创建测试资源目录: %RESOURCES_DIR% ) set "TEMP_DIR=%ROOT_DIR%\tests\integration\temp" if not exist "%TEMP_DIR%" ( mkdir "%TEMP_DIR%" echo 创建临时测试目录: %TEMP_DIR% ) REM 检查并创建测试插件目录 set "PLUGINS_DIR=%RESOURCES_DIR%\plugins" if not exist "%PLUGINS_DIR%" ( mkdir "%PLUGINS_DIR%" echo 创建测试插件目录: %PLUGINS_DIR% ) REM 检查并创建测试配置目录 set "CONFIG_DIR=%RESOURCES_DIR%\config" if not exist "%CONFIG_DIR%" ( mkdir "%CONFIG_DIR%" echo 创建测试配置目录: %CONFIG_DIR% ) REM 检查并创建测试音频文件目录 set "AUDIO_FILES_DIR=%RESOURCES_DIR%\audio" if not exist "%AUDIO_FILES_DIR%" ( mkdir "%AUDIO_FILES_DIR%" echo 创建测试音频文件目录: %AUDIO_FILES_DIR% ) echo %GREEN%集成测试环准备完成%NC% echo. REM 运行所有集成测试 set "PASSED_TESTS=0" set "FAILED_TESTS=0" set "TOTAL_TESTS=0" for %%t in (%INTEGRATION_TESTS%) do ( set "test_executable=%%t" for %%i in ("!test_executable!") do set "test_name=%%~ni" echo %BLUE%运行测试: !test_name!%NC% REM 运行测试并保存结果 set "xml_output=%INTEGRATION_TEST_RESULTS_DIR%\!test_name!_result.xml" set "text_output=%INTEGRATION_TEST_RESULTS_DIR%\!test_name!_result.txt" REM 运行测试 "!test_executable!" --gtest_output=xml:"!xml_output!" > "!text_output!" 2>&1 REM 检查测试结果 if !ERRORLEVEL! equ 0 ( echo %GREEN%测试通过: !test_name!%NC% set /a PASSED_TESTS+=1 ) else ( echo %RED%测试失败: !test_name! (退出码: !ERRORLEVEL!)%NC% set /a FAILED_TESTS+=1 ) set /a TOTAL_TESTS+=1 echo. ) REM 生成简单的HTML报 set "HTML_REPORT=%INTEGRATION_TEST_RESULTS_DIR%\integration_test_report.html" ( echo ^ echo ^ echo ^
echo ^ echo ^总测试数: ^%TOTAL_TESTS%^^
echo ^通过: ^%PASSED_TESTS%^^
echo ^失败: ^%FAILED_TESTS%^^
echo ^| 测试名称^ | echo ^结果^ | echo ^详情链接^ | echo ^
|---|---|---|
| !test_name!^ | echo ^!result!^ | echo ^^日志^ ^| ^XML^^ | echo ^
报告生成时间: %DATE% %TIME%^
echo ^ echo ^ ) >> "%HTML_REPORT%" echo %BLUE%=========================================================%NC% echo %BLUE% 集成测试结果汇总 %NC% echo %BLUE%=========================================================%NC% echo 总测试数: %TOTAL_TESTS% echo 通过: %GREEN%%PASSED_TESTS%%NC% echo 失败: %RED%%FAILED_TESTS%%NC% echo. echo 详细报告已生成到: %YELLOW%%HTML_REPORT%%NC% echo. REM 返回测试结果 if %FAILED_TESTS% equ 0 ( echo %GREEN%所有集成测通过!%NC% exit /b 0 ) else ( echo %RED%有集成测试失!%NC% exit /b 1 )