【发布时间】:2011-06-21 06:33:36
【问题描述】:
使用 VS2010 我有一个测试,它调用一个方法,该方法运行一个输出文件的命令行命令。
文件输出到: ...\TestResults\xxxxxx 2011-02-04 09_45_46\Out
我想测试一下文件是否写入成功
有什么方法可以在不进行硬编码的情况下引用此路径吗?
【问题讨论】:
标签: c# .net unit-testing tfs
使用 VS2010 我有一个测试,它调用一个方法,该方法运行一个输出文件的命令行命令。
文件输出到: ...\TestResults\xxxxxx 2011-02-04 09_45_46\Out
我想测试一下文件是否写入成功
有什么方法可以在不进行硬编码的情况下引用此路径吗?
【问题讨论】:
标签: c# .net unit-testing tfs
我昨天必须这样做:
string outputDir = new DirectoryInfo(Assembly.GetExecutingAssembly().Location).Parent.FullName
【讨论】:
对不起,我现在知道了。
您可以只使用单元测试类附带的 TestContext 属性。 您有 ResultDirectory、TestDir、TestDeploymentDir 等属性...
如果您的 TestClass 中没有它,只需添加一个名为 TestContext 的公共 TestContext 属性。
最好只创建一个新的单元测试类,看看它是如何使用的。
【讨论】:
您指的是路径中的xxxxxx 2011-02-04 09_45_46 部分吗?您可以浏览...\TestResults\ 路径中的文件夹,获取最后一个文件夹(希望是您想要的文件夹),然后使用 Path.Combine 创建您的完整路径。然后,您需要做的就是检查文件是否存在。
【讨论】:
您可以在项目的构建事件中指定特殊变量。
这是一个参考:Macros for Build Commands and Properties
我认为 OutDir 或 TargetDir 是您可能正在寻找的。p>
【讨论】:
恕我直言,另一个更强大的选项是提供命令行实用程序的输出路径,您可以将其指定为已知位置(即 Path.GetTempPath 或 Path.GetRandomFileName)。这样您就不会嵌入脆弱的测试运行器依赖项。
【讨论】: