Unit testing VSOnline自动测试运行/构建与本地有什么不同?

Unit testing VSOnline自动测试运行/构建与本地有什么不同?,unit-testing,msbuild,azure-devops,Unit Testing,Msbuild,Azure Devops,我的单元测试通过确定项目路径来查找特定文件夹中的配置文件: /// ///获取给定类型的项目路径。 /// /// /// 公共静态字符串GetProjectPathType类型 { var dll=new FileInfotype.Assembly.Location; 如果dll.Directory==null | |/…\Solution\Project\bin\Build dll.Directory.Parent==null | |/…\Solution\Project\bin d

我的单元测试通过确定项目路径来查找特定文件夹中的配置文件:

/// ///获取给定类型的项目路径。 /// /// /// 公共静态字符串GetProjectPathType类型 { var dll=new FileInfotype.Assembly.Location; 如果dll.Directory==null | |/…\Solution\Project\bin\Build dll.Directory.Parent==null | |/…\Solution\Project\bin dll.Directory.Parent.Parent==null | |/…\Solution\Project dll.Directory.Parent.Parent.Parent==null/…\Solution { 抛出new ExceptionUnable以查找+type.FullName的项目路径; } //类名、项目名称、版本、区域性、PublicKeyTyoken //ReSharper禁用一次可能的EnllReferenceException var projectName=type.AssemblyQualifiedName.Split','[1].Trim; var projectPath=Path.Combinedll.Directory.Parent.Parent.Parent.FullName,projectName; if!Directory.ExistsprojectPath { 抛出新的ExceptionString.Format在{1}处找不到{0}的项目路径,类型为.FullName,项目路径; } 返回项目路径; } 这在dev机器上非常有效,但是当VSOnline构建启动时,单元测试失败,说它找不到项目路径。这让我相信VSOnline要么在一台机器上构建,要么在另一台机器上进行单元测试,要么它的目录结构有所不同,要么单元测试没有读取文件系统的权限


有人知道可能是什么问题吗?

当VSOnline执行生成时,源文件位于c:\a\src\Branch Name\,但在生成时,它会生成到c:\a\bin文件夹。我猜这样做是为了帮助最小化任何长路径名错误。构建在同一台服务器上执行,但输出与在本地运行不同

这需要对我的方法GetProjectPath方法进行一些更改:

字符串solutionFolder=null; 如果dll.Directory==null | |/…\Solution\Project\bin\Build dll.Directory.Parent==null | |/…\Solution\Project\bin dll.Directory.Parent.Parent==null | |/…\Solution\Project dll.Directory.Parent.Parent.Parent==null/…\Solution { 如果dll.DirectoryName==@C:\a\bin { //生成在VSOnline上。重定向到其他c:\a\src\Branch Name var s=新System.Diagnostics.StackTracetrue; 对于变量i=0;i另一方面,配置文件表示外部依赖关系。丹尼尔曼说:“我会考虑嘲笑你的测试,不依赖于它。我很欣赏你的评论,但我不确定这是可能的。”配置文件列出了用于模拟响应的序列化XML文件的目录。