我想在我的测试项目中进行一些交互测试,并希望测试一些基于xml配置的组件...如何在代码中找到测试项目的基本目录,以便我可以创建相对于它的路径?我想要一个包含测试xml文件的子文件夹。
由于
编辑:
我使用了Assembly.GetExecutingAssembly()。Location - 它给出了我运行测试时的输出文件夹..我需要配置xml文件以将程序集放到该目录中..我该怎么做?
答案 0 :(得分:2)
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
将为您提供应用程序文件路径,您可以使用该路径将XML文件加载到其目录中。
如果您正在严格谈论项目文件夹,假设它在bin \ debug中,只需在其末尾添加“.... \”。
答案 1 :(得分:2)
你应该能够使用项目根目录的相对路径;例如:doc.Load(@"somedir\my.xml");
。问题是:您使用的是哪个测试框架?使用NUnit,大多数测试运行者(在IDE中,如TestDriven.NET,R#等)只使用项目项的属性。因此,请确保“复制到输出目录”为“始终复制”或“如果更新则复制”。
对于附带一些VS SKU的内置MSTest跑步者,情况有所不同;您可以使用testrunconfig或test-fixture上的属性来告诉它要部署什么。这是愚蠢的,IMO。对于testrunconfig,双击testrunconfig并选择“Deployment”,然后选择“Add File ...”;对于属性,您需要[DeploymentItem]
- 如:
[TestClass, DeploymentItem(@"foo\bar.xml")]
public class SomeTestClass {
...
}
答案 2 :(得分:1)
我假设Application.StartupPath也不适合你?
也许有一个我缺少的要求但是有一些原因你不能告诉测试把输出放在哪里?