Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在用于单元测试时,避免在CSV文件中随意键入列_C#_Unit Testing_Mstest - Fatal编程技术网

C# 在用于单元测试时,避免在CSV文件中随意键入列

C# 在用于单元测试时,避免在CSV文件中随意键入列,c#,unit-testing,mstest,C#,Unit Testing,Mstest,我正在使用CSV文件将数据注入测试 [TestMethod] [DataSource( CsvData, CsvDir + "TC177023.csv", "TC177023#csv", SEQ )] 该文件如下所示:(删除了其他字符串) 我有一列有整数,我想把它扩展到十六进制。因此,我从“value”列中获取值,而不是将其转换为int int value = (int)TestContext["Value"]; 我试图访问表示整数的字符串 string text = TestConte

我正在使用CSV文件将数据注入测试

[TestMethod]
[DataSource( CsvData, CsvDir + "TC177023.csv", "TC177023#csv", SEQ )]
该文件如下所示:(删除了其他字符串)

我有一列有整数,我想把它扩展到十六进制。因此,我从“value”列中获取值,而不是将其转换为int

int value = (int)TestContext["Value"];  
我试图访问表示整数的字符串

string text = TestContext.DataRow["Value"].ToString();  
但我得到的只是一个空字符串。我不会用我想找出问题所在的一切来打扰你。我至少可以从调试时检查TestContext对象中看出,列的类型确实是vas Int32

最后,我尝试用字符串替换列中的整数值,瞧,我得到了十六进制值。我的结论是,当加载值时,测试框架正在“帮助”我,并通过look-on值设置列的类型

现在我的问题是:

我可以设置一些地方来禁止这种行为,这样MS单元测试框架就不能帮助我了吗?
我无法更改框架,也无法将该列中的int值更改为可识别为字符串的内容。我不是解决方案的最终用户,因此任何变通办法都可能使情况变得更糟。我只想得到“单元格”的“原始值”,以便进一步处理

我已经做了进一步的调查,对于谁会有同样的问题,我写在这里。
我的问题的简短答案是不,我不能在我的限制之内

答案很长:测试框架使用oledb连接来读取excel和csv文件。有一种方法可以使oledb接受“混合值”,将字符串“IMEX=1”作为连接字符串中的扩展属性发送。
资料来源:
不幸的是,连接字符串是在框架代码中设置的,至少在开源版本中是这样的,在githug上是可以访问的,我还没有找到一种方法将字符串偷偷地放进去

string text = TestContext.DataRow["Value"].ToString();