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

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

问题描述:

我写了一个测试。我使用数据驱动的单元测试。我的方法声明如下所示:如何在方法的属性中设置通用路径

[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; 

因为价值是只读的它不工作。


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

合并()抛出了一个消息:无法解析symbole '合并'。


我也尝试过使用ConfigurationManager类,但是我得到一个信息:类名在这一点上是无效的。

  1. 包括FILE.CSV到您的项目,并将其复制到输出目录(右键单击FILE.CSV溶液=>属性=>高级=>复制到输出目录=>复制如果更新)

  2. DataSourceAttribute使用相对路径“FILE.CSV”:

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

我跟着你的脚步,我的测试失败消息:单元测试适配器失败连接到数据源或读取数据。有关解决此错误的更多信息,请参阅“数据驱动的单元测试疑难解答”[...]。错误详细信息:Microsoft Jet数据库引擎找不到对象'File.csv'。确保对象存在,并且正确拼写其名称和路径名。 当我写[数据源(“Microsoft.VisualStudio.TestTools.DataSource.CSV”,“D:\\ File.csv”,“文件#csv”,DataAccessMethod.Sequential)]然后测试工程。 – Jaryn

+1

@Jaryn是否将File.csv文件复制到测试项目的bin/debug文件夹中?你是否手动将文件放在“D:\\”上?是否有可能检查System.Environment.CurrentDirectory和System.AppDomain.CurrentDomain.BaseDirectory值? –

我的打击,因为一个文件夹结构发生的问题。我在我的解决方案资源管理器中有一个像folllow结构:

TestProject 
    -> Folder1 
    -> Folder2 
     -> File.csv 
     -> Tests.cs 

我跑了测试。在bin/debug文件夹中,我没有看到File.csv。 FILE.CSV是文件夹里面结构法:

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

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

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