在单元测试用例的 TFS 构建中找不到路径的一部分

Posted

技术标签:

【中文标题】在单元测试用例的 TFS 构建中找不到路径的一部分【英文标题】:Could not find a part of the path in TFS Build for Unit Test Case 【发布时间】:2020-02-20 18:37:45 【问题描述】:

我正在尝试将我的单元测试用例包含在我的构建管道中,以将这些单元测试用例作为构建的一部分运行。我的测试用例很少使用存储在单元测试项目的 XML 文件中的测试数据。这些测试在我的本地系统中成功运行。但是当我尝试将这些测试用例作为 TFS 构建管道的一部分运行时,这些测试用例会失败,因为构建无法找到这些 XML 文件的数据。

我尝试替换 TFS 构建路径的配置文件应用程序设置,但它不起作用。测试用例仍然面临同样的失败。 还尝试将这些文件包含在 bin 文件夹中,我可以看到这些文件存在。

以下是我在运行单元测试作为 TFS 构建的一部分时遇到的异常。

Assert.Fail 失败。系统异常:找不到一部分 小路 'I:\Agent-Win-C_work\495\s\STARS-2.UnitTests\bin\XMLStore\CustomerRequest.xml'。 堆栈跟踪:在 System.IO.__Error.WinIOError(Int32 errorCode, String MaybeFullPath) 在 System.IO.FileStream.Init(String path, FileMode 模式、FileAccess 访问、Int32 权限、Boolean userRights、FileShare 共享,Int32 bufferSize,FileOptions 选项,SECURITY_ATTRIBUTES secAttrs,字符串 msgPath,布尔 bFromProxy,布尔 useLongPath, 布尔检查主机)在 System.IO.FileStream..ctor(字符串路径,FileMode 模式、FileAccess 访问、FileShare 共享、Int32 bufferSize、 FileOptions 选项,字符串 msgPath,布尔 bFromProxy)在 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess 访问,文件共享共享,Int32 bufferSize)在 System.Xml.XmlDownloadManager.GetStream(Uri uri,ICredentials 凭据,IWebProxy 代理,RequestCachePolicy 缓存策略)在 System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri,字符串角色,类型 ofObjectToReturn) 在 System.Xml.XmlTextReaderImpl.OpenUrlDelegate(对象 xmlResolver)在 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode 代码,CleanupCode backoutCode,对象 userData)在 System.Threading.CompressedStack.Run(CompressedStack 压缩栈, ContextCallback 回调,对象状态)在 System.Xml.XmlTextReaderImpl.OpenUrl() 在 System.Xml.XmlTextReaderImpl.Read() 在 System.Xml.XmlLoader.Load(XmlDocument 文档,XmlReader 阅读器,布尔值 preserveWhitespace)在 System.Xml.XmlDocument.Load(XmlReader 阅读器) 在 System.Xml.XmlDocument.Load(字符串文件名) STARS_2.UnitTests.TestCommon.TestDataCaller.RFCXmlConnect(字符串 文件名)在 I:\Agent-Win-C_work\495\s\STARS-2.UnitTests\TestCommon\TestDataCaller.cs:16行

解决问题的任何建议

【问题讨论】:

您好 Naveen,您如何在代码中引用该文件?就像 SalamiArmy 提到的那样,您可能需要使用部署项,但无论如何从堆栈跟踪来看,xml 文件似乎位于子文件夹 (XMLStore) 中,您是使用完整路径还是相对路径来引用它?对于部署项目,它也是 [DeploymentItem(@"XMLStore\CustomerRequest.xml")] 嗨,Naveen,关于这张票的任何更新,您有机会实施 SalamiArmy 建议的解决方案吗?你能解决吗? 好吧,SalamiArmy 提供的建议对我来说不起作用。我们修改了单元测试代码以使用反射加载测试数据 【参考方案1】:

您不仅需要包含您的测试所依赖的那些 xml 文件,还需要使用 [DeploymentItem(bin 内的路径,部署到的路径)] 将它们部署到构建中的测试代理。

【讨论】:

以上是关于在单元测试用例的 TFS 构建中找不到路径的一部分的主要内容,如果未能解决你的问题,请参考以下文章

测试用例cicd怎么实现的

在 TFS 构建中找不到 NuGet 包版本?

unittest单元测试框架中的参数化及每个用例的注释

未通过所有测试用例的二叉树的最大路径

测试用例的理论知识

TFS API将单元测试与测试用例相关联