如何在方法的属性中设置通用路径
问题描述:
我写了一个测试。我使用数据驱动的单元测试。我的方法声明如下所示:如何在方法的属性中设置通用路径
[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类,但是我得到一个信息:类名在这一点上是无效的。
答
包括FILE.CSV到您的项目,并将其复制到输出目录(右键单击FILE.CSV溶液=>属性=>高级=>复制到输出目录=>复制如果更新)
-
在
DataSourceAttribute
使用相对路径“FILE.CSV”:[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "File.csv", "File#csv", DataAccessMethod.Sequential)]
答
我的打击,因为一个文件夹结构发生的问题。我在我的解决方案资源管理器中有一个像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)]
我跟着你的脚步,我的测试失败消息:单元测试适配器失败连接到数据源或读取数据。有关解决此错误的更多信息,请参阅“数据驱动的单元测试疑难解答”[...]。错误详细信息:Microsoft Jet数据库引擎找不到对象'File.csv'。确保对象存在,并且正确拼写其名称和路径名。 当我写[数据源(“Microsoft.VisualStudio.TestTools.DataSource.CSV”,“D:\\ File.csv”,“文件#csv”,DataAccessMethod.Sequential)]然后测试工程。 – Jaryn
@Jaryn是否将File.csv文件复制到测试项目的bin/debug文件夹中?你是否手动将文件放在“D:\\”上?是否有可能检查System.Environment.CurrentDirectory和System.AppDomain.CurrentDomain.BaseDirectory值? –