1

我想在我的测试项目中进行一些交互测试,并想测试一些基于 xml 配置的组件...如何在代码中找到测试项目的基本目录,以便我可以创建相对于它的路径?我想要一个包含测试 xml 文件的子文件夹。

谢谢

编辑:

我使用了 Assembly.GetExecutingAssembly().Location - 它给出了我运行测试时的输出文件夹。我需要配置 xml 文件以将程序集与该目录一起使用。我该怎么做?

4

3 回答 3

2

您应该能够使用项目根目录的相对路径;例如:doc.Load(@"somedir\my.xml");。问题是:您使用的是哪个测试框架?使用 NUnit,大多数测试运行程序(在 IDE 中,例如 TestDriven.NET、R# 等)只使用项目项的属性。因此,请确保“复制到输出目录”为“始终复制”或“如果较新则复制”。

对于一些 VS SKU 附带的内置 MSTest 运行程序,情况有所不同;您可以使用 testrunco​​nfig 或 test-fixture 上的属性来告诉它要部署什么。这是愚蠢的,海事组织。对于 testrunco​​nfig,双击 testrunco​​nfig 并选择“部署”,然后选择“添加文件...”;对于属性,你想要[DeploymentItem]- 如:

[TestClass, DeploymentItem(@"foo\bar.xml")]
public class SomeTestClass {
    ...
}
于 2009-12-14T04:58:33.957 回答
2
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

将为您提供应用程序文件路径,您可以使用该路径在其目录中加载 XML 文件。

如果您严格地谈论项目文件夹,假设它在 bin\debug 中,只需在其末尾附加一个“....\”。

于 2009-12-14T04:26:48.663 回答
1

我假设 Application.StartupPath 也不适合你?

也许我缺少一个要求,但是有什么原因你不能告诉测试把输出放在哪里?

于 2009-12-14T04:58:10.350 回答