VS2019中如何配置RunSettings使视频与测试HTML报告同目录?
VS2019测试:视频录制器与自定义HTML日志同目录配置方案
问题背景
原test settings已弃用,计划将VS版本从2017升级至2019及以上。现有自定义HTML日志报告记录测试操作,在runsettings中配置Video Recorder数据收集器后出现以下问题:
- 启用视频录制器时,视频生成在远程机器,但HTML文件无法生成
- 禁用视频录制器时,HTML文件正常生成并附加,但视频被存放在单独的新文件夹
已配置ResultsDirectory,尝试过修改目录、调整Azure发布流水线设置,均未解决。需要实现视频与HTML文件存放在同一文件夹,作为测试结果附件。
解决方案
1. 修正ResultsDirectory路径格式
原配置中的\.\TestResults路径解析存在异常,改为标准相对路径.\TestResults(基于解决方案目录),确保测试框架能正确识别统一结果目录。
2. 为视频录制器指定统一输出目录
在VideoRecorder的<Configuration>节点中添加<OutputDirectory>配置,明确指定与HTML日志一致的输出路径,强制视频文件生成到测试结果目录:
<Configuration> <MediaRecorder sendRecordedMediaForPassedTestCase="false" xmlns="" /> <ScreenCaptureVideo bitRate="512" frameRate="2" quality="20" /> <OutputDirectory>.\TestResults</OutputDirectory> </Configuration>
3. 移除冲突的LegacySettings配置
原LegacySettings中的执行配置与VS2019原生测试框架逻辑冲突,建议注释或删除该节点,避免干扰数据收集器的路径处理:
<!-- <LegacySettings> <Execution> <TestTypeSpecific> <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"> <AssemblyResolution> <TestDirectory useLoadContext="true" /> </AssemblyResolution> </UnitTestRunConfig> </TestTypeSpecific> <Timeouts testTimeout="2700000" /> </Execution> </LegacySettings> -->
4. 确认MSTest部署配置
保持DeploymentEnabled="False",避免测试部署生成临时目录;同时设置DeleteDeploymentDirectoryAfterTestRunIsComplete="False",确保结果文件完整保留。
5. Azure流水线配套调整(若使用)
在Azure发布流水线的测试任务中,指定修改后的runsettings文件,并在测试结果配置中设置与ResultsDirectory一致的路径,确保流水线能统一收集视频与HTML文件。
修改后的完整RunSettings示例
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <!-- Configurations that affect the Test Framework --> <RunConfiguration> <!-- Path relative to solution directory --> <ResultsDirectory>.\TestResults</ResultsDirectory> <!-- [x86] | x64 - You can also change it from menu Test, Test Settings, Default Processor Architecture --> <TargetPlatform>x86</TargetPlatform> <BatchSize>1000</BatchSize> <TestSessionTimeout>72000000</TestSessionTimeout> </RunConfiguration> <!-- LegacySettings已注释,避免与VS2019原生配置冲突 --> <!-- <LegacySettings> <Execution> <TestTypeSpecific> <UnitTestRunConfig testTypeId="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b"> <AssemblyResolution> <TestDirectory useLoadContext="true" /> </AssemblyResolution> </UnitTestRunConfig> </TestTypeSpecific> <Timeouts testTimeout="2700000" /> </Execution> </LegacySettings> --> <!-- Configurations for data collectors --> <DataCollectionRunSettings> <DataCollectors> <DataCollector uri="datacollector://microsoft/VideoRecorder/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder.VideoRecorderDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.VideoRecorder, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Screen and Voice Recorder"> <Configuration> <MediaRecorder sendRecordedMediaForPassedTestCase="false" xmlns="" /> <ScreenCaptureVideo bitRate="512" frameRate="2" quality="20" /> <!-- 指定视频输出目录与测试结果目录一致 --> <OutputDirectory>.\TestResults</OutputDirectory> </Configuration> </DataCollector> </DataCollectors> </DataCollectionRunSettings> <!-- MSTest adapter --> <MSTest> <MapInconclusiveToFailed>False</MapInconclusiveToFailed> <CaptureTraceOutput>False</CaptureTraceOutput> <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete> <DeploymentEnabled>False</DeploymentEnabled> </MSTest> </RunSettings>
内容的提问来源于stack exchange,提问作者Test1234
相关产品推荐
相关产品推荐

