如何在方法属性中设置通用路径

时间:2016-11-08 08:39:22

标签: c# data-driven-tests

我写了一个测试。我使用数据驱动单元测试。我的方法声明如下:

[TestCategory("IntegrationTest")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
"C:\\MyProjectPath\\File.csv", "File#csv",
DataAccessMethod.Sequential), DeploymentItem("File.csv"),
TestMethod]
public void Read_CSV_File_Attribute()

我想将更改提交给源代码管理。我遇到的问题是DataSource属性中的硬编码路径:“C:\ MyProjectPath \ File.csv”。

如果有人从存储库中获取此代码的最新版本,则此人必须更改此属性中的路径。

如何制定适用于所有c-worker的通用路径?

我尝试使用以下方法更改路径:

MethodInfo method = typeof(TestClass).GetMethod("Read_CSV_File_Attribute");
method.CustomAttributes.ElementAt(1).ConstructorArguments.ElementAt(1).Value = _newPath;

它不起作用,因为Value是只读的。

[TestCategory("IntegrationTest")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV",
Path.Combine(), "File#csv",
DataAccessMethod.Sequential), DeploymentItem("File.csv"),
TestMethod]
public void Read_CSV_File_Attribute()

Combine()会抛出一条消息:无法解析symbole'Combine'。

我也尝试使用ConfigurationManager类,但是我得到了一个信息:此时类名无效。

2 个答案:

答案 0 :(得分:0)

  1. 将File.csv包含到项目中并将其复制到输出目录(右键单击解决方案中的File.csv => Properties => Advanced =>复制到输出目录=>如果更新则复制)

  2. DataSourceAttribute中使用“File.csv”的相对路径:

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", 
            "File.csv", "File#csv", DataAccessMethod.Sequential)]
    

答案 1 :(得分:0)

我遇到的问题是由于文件夹结构而发生的。我在我的解决方案资源管理器中有一个像folllow一样的结构:

TestProject
  -> Folder1
    -> Folder2
      -> File.csv
      -> Tests.cs
我跑了测试。在bin / debug文件夹中,我没有看到File.csv。 File.csv在文件夹structre:

bin
  -> debug 
    -> Folder1
      -> Folder2
        -> File.csv

我的问题的解决方案是将路径更改为文件:

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", 
        @"Folder1\Folder2\File.csv", "File#csv", DataAccessMethod.Sequential)]
相关问题