我想在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文件放在根解决方案目录中,这样我就不必将项目目录作为路径的一部分传递。
答案 0 :(得分:10)
属性只能使用常量字符串,所以不能:你不能这样做(你必须使用预组合版本,或文字连接 - 而不是Path.Combine
)。您也可以使用测试项目部署设置(testrunconfig?),但坦率地说,我更喜欢使用NUnit方法来标记文件(在csproj中,与正常情况一样)进行部署。我还没弄清楚为什么MS添加了一种单独的方式来定义...
答案 1 :(得分:1)
这应该有效:
[TestClass]
[DeploymentItem(TestParams.ConfigFileName)]
public class MyTest
{
private static class TestParams
{
public const string ConfigFileName = "TestConfig.xml";
}
// ...
}