gpt4 book ai didi

c# - TestContext.DeploymentDirectory 的 Azure 管道单元测试 Uri 导致失败

转载 作者:行者123 更新时间:2023-12-02 02:39:44 25 4
gpt4 key购买 nike

我有一个 Azure DevOps 版本,正在执行一套单元测试。测试在本地通过,但在 Hosted 2017 代理上构建失败,因为使用 TestContext.DeploymentDirectory 的测试失败。 .

失败的测试使用TestContext创建一个模拟设置对象。模拟设置的 OutputPath 设置为 TestContext.DeploymentDirectory 值。然后,模拟设置对象被传递给构造函数,并使用 Assert.AreEqual 检查生成的对象,如图所示;

[TestMethod]
public void Test_DiskStorageManager()
{
var settings = new MockDataHandlerSettings(TestContext);
var manager = new DiskStorageManager(settings);

Assert.AreEqual(settings.OutputPath, manager.OutputPath);
}

构造函数内如下;

if (Uri.TryCreate(settings.OutputPath, UriKind.Absolute, out Uri outputUri))
{
OutputPath = outputUri.LocalPath;
IsLocalOutput = outputUri.IsLoopback;
}
else
{
throw new ArgumentException($"Output path is invalid {settings.OutputPath}");
}

测试在本地运行良好,但在托管代理上发生以下测试失败;

Assert.AreEqual failed. 
Expected:<D:\a_temp..\Tests\TestResults\TestResults\Deploy_VssAdministrator 2020-03-10 03_09_31\Out>.
Actual:<D:\a\Tests\TestResults\TestResults\Deploy_VssAdministrator 2020-03-10 03_09_31\Out>.

是什么导致从 D:\a_temp..\ 更改为 D:\a\ 并使测试失败?

编辑

测试任务由以下YAML定义;

variables:
BuildConfiguration: 'debug'
BuildPlatform: 'any cpu'

steps:
- task: VSTest@2
displayName: 'Test Assemblies'
inputs:
testAssemblyVer2: |
**\$(BuildConfiguration)\**\*Tests.dll
!**\obj\**
runSettingsFile: '$/MyProject/Tests/.runsettings'
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'

.runsettings 包含

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<RunConfiguration>
<MaxCpuCount>1</MaxCpuCount>
<ResultsDirectory>..\Tests\TestResults</ResultsDirectory>
<TargetPlatform>x64</TargetPlatform>
</RunConfiguration>
<DeploymentEnabled>True</DeploymentEnabled>
</RunSettings>

最佳答案

测试失败,因为ResultsDirectory element of the .runsettings file中的相对路径。测试初始化​​为;

TestResultsDirectory intialized to D:\a\_temp\..\Tests\TestResults\TestResults

正在删除<ResultsDirectory>..\Tests\TestResults</ResultsDirectory> ;

TestResultsDirectory intialized to d:\a\_temp\TestResults

注意:失败测试中显示的预期值未正确转义 \ 。显示值为D:\a_temp..\Tests但任务日志中的失败消息是 D:\a\_temp\..\Tests .

这并不能解释为什么相对路径在 VS2019 16.4 中完全解析,而不是在 Azure 管道中。

关于c# - TestContext.DeploymentDirectory 的 Azure 管道单元测试 Uri 导致失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60612131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com