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