【问题标题】:C# using static variable as parameter to DeploymentItemC# 使用静态变量作为 DeploymentItem 的参数
【发布时间】:2010-01-25 16:44:29
【问题描述】:

我想在 MSTest 单元测试中使用静态变量作为 DeploymentItem 的参数,但我似乎无法这样做。当单元测试运行时,需要将一个 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 文件放在根解决方案目录中,这样我就不必将项目目录作为路径的一部分传递。

【问题讨论】:

    标签: c# path mstest deploymentitem


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这应该可行:

      [TestClass]
      [DeploymentItem(TestParams.ConfigFileName)]
      public class MyTest
      {
          private static class TestParams
          {
              public const string ConfigFileName = "TestConfig.xml";
          }
      // ...
      }
      

      【讨论】:

        猜你喜欢
        • 2017-02-01
        • 2020-07-02
        • 1970-01-01
        • 2020-05-25
        • 2021-07-03
        • 2013-04-01
        • 2015-01-27
        • 1970-01-01
        • 2012-04-26
        相关资源
        最近更新 更多