在我的 MsTests 中,我必须在我的项目中访问并使用一个文件。所以我使用 Path.GetFullPath(@"......\name_of_file")
但是在运行构建时,我得到一个找不到文件的错误,因为路径的上下文是临时目录 (C:\TeamCity\buildAgent\temp\buildTmp) 而不是我所有文件所在的结帐目录 (C:\TeamCity\构建代理\工作\e87255825b2f3eb1)
有配置可以改变吗?或者更好的方法来做到这一点?
我找不到一个 TeamCity 选项来指定应该运行单元测试的目录。其他人也许可以在那里提供帮助。
但是,我通常将单元测试所需的文件作为嵌入式资源包含在内,以便在执行期间您可以确定该文件始终可以访问,无论它从何处运行。您可以轻松地Stream
从嵌入式资源中获取 a,如果您需要使用仅采用文件名的 API,您可以将文件写入Path.GetTempPath()
.
我修改了我的测试以引用如下文件:
string currentDir = new System.Diagnostics.StackFrame(true).GetFileName();
var workingFile = new FileInfo(currentDir);
string fileContents = File.ReadAllText(workingFile.Directory + @"\ResourceFolder\MyFile.xml");
我知道这不是一个好方法,但这适用于我在本地和从 TeamCity 调用时。