c# - VSTS 中的文件路径

标签 c# batch-file azure-devops

我希望在 C# 中以编程方式运行批处理文件,作为测试的一部分(在 MS TEST 中运行),我在本地计算机上进行了测试。我要运行的批处理文件位于存储库中的支持文件夹中,该文件夹还包含源代码。在 VSTS 中,测试是这样运行的:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "C:\International\InternationalAppAutomation\International.IntegrationTests.UI\International.IntegrationTests.UI\bin\Debug\International.IntegrationTests.UI.dll" "C:\International\InternationalAppAutomation\International.IntegrationTests.UI\International.IntegrationTests.UI\obj\Debug\International.IntegrationTests.UI.dll" /TestCaseFilter:"TestCategory=Explore" /Settings:"C:\International\InternationalAppAutomation\International.IntegrationTests.UI\International.IntegrationTests.UI\QA.testsettings" /logger:trx /TestAdapterPath:"C:\International\InternationalAppAutomation"

并且因为我使用相对路径来运行批处理文件,所以它失败了,因为 VSTS 从与我的本地计算机不同的位置运行。这个问题的推荐解决方案是什么?

注意 - 我不能将这个批处理文件放在测试输出文件夹中,因为它非常大,我们不想为每次新的测试运行都复制它。

最佳答案

如果您想在测试执行中使用它,您可能需要使用测试类或方法上的属性将它设置为 [DeploymentItem],这确保它被放置在测试执行中目录。

如果这不是一个选项,请使用环境变量来查找您的源代码管理根目录。构建代理将自动设置变量 %BUILD_SOURCESDIRECTORY%。您或您的批处理文件应该能够使用它来查找位置。或者使用我的 VSTS variables task使用文件路径设置特定变量。每个变量都将在后续任务中用作环境变量。您可以使用现有变量来解析文件路径。

如果您仍在使用 XAML 构建,可以使用类似的变量 %TF_BUILD_SOURCESDIRECTORY%

参见:

根据您解析文件的方式,您可能需要告诉批处理文件当前的测试输出目录或工作目录。这些很容易从事物的 C# 端检索,然后可以存储在环境中或在执行批处理文件时作为参数传递。

通过将适当的 TestContext 属性添加到您的测试类,您可以从以下位置检索这些目录:

TestContext.DeploymentDirectory 
TestContext.TestResultsDirectory 

参见:

关于c# - VSTS 中的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703955/

相关文章:

azure - Function App PowerShell - 使用模块发布函数

C# NotifyIcon ShowBalloonTip 超时

csv - 批处理脚本 - 根据文件名将列添加到 CSV

TFS 附件大小 0 KB 通过 REST 调用

javascript - 如何通过使用 javascript/jquery 调用使用 .bat 文件自动打印

windows - 如何解析批处理文件中的命令输出

无论路径如何,Azure 管道触发器都包括

c# - ASP.NET MVC Image 使用 Entity Framework 在数据库上上传和创建记录

c# - 对其他应用程序进行同步调用

c# - 双击时停止单元格进入编辑模式