[英]Get around involuntary typing of columns in CSV file when using for unit test
我正在使用 CSV 文件将数据注入我的测试。
[TestMethod]
[DataSource( CsvData, CsvDir + "TC177023.csv", "TC177023#csv", SEQ )]
该文件看起来像这样:(删除了其他字符串)
something,something,Value,something,something,something
,,0xDEADBEEF,,
,,-12,,
,,0,,
,,0,,
,,0,,
我有一列有整数,我想把它扩展到十六进制。 所以我从“值”列中获取值,而不是将其转换为 int
int value = (int)TestContext["Value"];
我试图访问代表 integer 的字符串
string text = TestContext.DataRow["Value"].ToString();
但我得到的只是一个空字符串。 我不会用我试图找出问题所在的一切来打扰你。 我至少可以从检查 TestContext object 中看到,同时调试列的类型确实是 vas Int32。
最后,我尝试用字符串替换列中的 integer 值,你瞧,我得到了十六进制值。 我的结论是,在加载值时,测试框架正在“帮助”我并通过查看值来设置列的类型。
现在我的问题:
我可以在某处设置一些东西来抑制这种行为,这样 MS 单元测试框架就不能帮助我吗? 我无法更改框架,我无法将该列中的 int 值更改为可识别为字符串的值。 我不是该解决方案的最终用户,因此任何变通方法都可能使事情变得更糟。 我只想获取“单元格”的“原始值”以进行进一步处理。
我已经进一步调查过,对于谁会有同样的问题,我在这里写下来。
对我的问题的简短回答是否定的,我不能在我的限制范围内。
长答案是:测试框架使用 oledb 连接从 excel 和 csv 文件中读取。 有一种方法可以使 oledb 接受“混合值”,将字符串“IMEX = 1”作为连接字符串中的扩展属性发送。
资料来源: https://yoursandmyideas.com/2011/02/05/how-to-read-or-write-excel-file-using-ace-oledb-data-provider/
不幸的是,连接字符串设置在框架代码中,至少在开源版本中,可以在 githug 上访问,我还没有找到在字符串中走私的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.