我写了一些集成测试(使用XUnit)来测试 SmtpClient . 基本上我在我的 app.config
SmtpClient
app.config
configuration> <system.net> <mailSettings> <smtp deliveryMethod="SpecifiedPickupDirectory"> <specifiedPickupDirectory pickupDirectoryLocation="F:\EmailTests\"/> </smtp> </mailSettings> </system.net> </configuration>
现在很明显,由于以下原因,该测试在团队服务上失败:
E: \电子邮件测试
此外,这种覆盖并不排除相对路径。
在构建期间需要保存数据的TFS中,应该如何处理这些场景?
你需要做出 EmailTests 在Visual Studio中文件夹单元测试项目的一部分,并使用 Copy Local 属性设置为 True . 这样做可以提供两种选择:
EmailTests
Copy Local
True
由于该文件夹已经是您的代码库的一部分,因此在开始构建之前,VSO会将其签出。然后,如果需要在一个构建任务中访问它,可以使用预定义的构建变量 Build.SourcesDirectory 并将其与您的文件夹名称合并,如下所示。您也可以在配置文件中使用它,替换硬编码的 F:\EmailTests\ .
Build.SourcesDirectory
F:\EmailTests\
$(Build.SourcesDirectory)\EmailTests\
或者,您可以使用另一个VSO预定义变量访问此文件夹 Build.BinariesDirectory
Build.BinariesDirectory
Here 是用于类似问题的所有预定义VSO变量的链接。