5

我想DeploymentItem在 MSTest 单元测试中使用静态变量作为参数,但我似乎无法这样做。当单元测试运行时,需要将一个 XSL 文件与 DLL 文件一起复制,我将位置定义为

private static string _xslPath = Path.Combine("MyProjectDir", "transform.xsl");

但是,当我执行以下操作时:

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(_xslPath)]
public void XmlToResultsTest() { }

我收到此构建错误:

属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式

好吧好吧,但是自己组装路径似乎很脏:

[DeploymentItem(@"MyProjectDir\transform.xsl")]

我在这里是否过于挑剔想要使用Path.Combine?我还有另一种选择吗?我想我可以将 XSL 文件放在根解决方案目录中,这样我就不必将项目目录作为路径的一部分传递。

4

2 回答 2

10

属性只能使用常量字符串,所以不:你不能这样做(你必须使用预先组合的版本,或者文字连接 - 不是Path.Combine)。您也可以使用测试项目部署设置(testrunco​​nfig?),但坦率地说,我更喜欢使用仅标记文件(在 csproj 中,像正常情况一样)进行部署的 NUnit 方法。我还没有弄清楚为什么 MS 添加了一种单独的定义方式......

于 2010-01-25T16:51:32.623 回答
1

这应该有效:

[TestClass]
[DeploymentItem(TestParams.ConfigFileName)]
public class MyTest
{
    private static class TestParams
    {
        public const string ConfigFileName = "TestConfig.xml";
    }
// ...
}
于 2015-02-16T13:20:31.247 回答