【问题标题】:Data-driven unit testing - Problem with CSV encoding?数据驱动的单元测试 - CSV 编码有问题?
【发布时间】:2009-07-10 16:27:55
【问题描述】:

我的数据驱动单元测试中使用了以下 CSV 文件:

File;expected
Resources.resx;default
Resources.de.resx;de
AttachmentDetail.ascx.it.resx;it
SomeOtherFile.rm-CH.resx;rm-CH

“文件”和“预期”是标题。但是,如果我想在代码中获取“文件”列,例如

TestContext.DataRow["File"].ToString();

我得到了错误

System.ArgumentException:列 “文件”不属于表..

当我通过测试方法属性将 CSV 文件添加到现有测试用例时,“文件”列的名称前似乎有一些奇怪的符号,很像编码问题。但是,如果我使用记事本、Notepad++ 甚至 TextMate(在 Mac 上)打开 CSV 文件,我看不到任何此类迹象,而且我无法摆脱它们。

有人可以就这个问题给我一个建议吗?

【问题讨论】:

  • 您介意说那是哪种语言吗?我假设 C#...

标签: c# unit-testing mstest data-driven-tests


【解决方案1】:

如果您在 VS2008 中编辑 CSV 文件,您可以设置 CSV 文件的保存方式:

“文件\高级保存选项...”

在“编码:”下拉菜单中,默认为 UTF-8。将其更改为“西欧 (DOS) - 代码页 850”。单独保留行尾选择。

【讨论】:

  • 谢谢你的提示,我试试看。
  • 这对我有用。这可能应该被标记为答案。
  • 很棒的提示,这对我有用。花了大约 2 个小时来处理 ArgumentException 错误,直到我找到这篇文章。我所有其他 CSV 数据文件都工作正常,但 1 没有,这就是原因。很奇怪的问题。不知道为什么会发生这种情况。
【解决方案2】:

保存的文件是什么编码的?

据我所知,保存在 Windows 记事本中的 UTF-8 在文件前面放置了一些奇怪的符号,以便在找不到 UTF8 所需的任何符号时确切知道使用了什么编码(假设一切都只是纯ASCII)

您是否使用 Notepad++ 编辑了文件并保存了它?我会尝试这样做并比较结果。

【讨论】:

  • 这也是我的第一个假设,所以我按照你说的做了,用 Notepad++ 编辑+保存了文件……但是没有结果。我快生气了,就这么简单,就这些该死的迹象。一定有什么问题。
猜你喜欢
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2016-11-26
相关资源
最近更新 更多