C#DataSource CSV单元测试 - 无法找到第一列

时间:2014-09-06 03:19:27

标签: c# unit-testing csv visual-studio-2013 datasource

我尝试使用Microsoft Visual Studio 2013加载CSV文件。代码:

    [TestMethod]
    [DeploymentItem("data.csv")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential)]
    public void Teste_Arquivo_EXEC()
    {
        // DETAIL
        var row = TestContext.DataRow;
        var detail = new EXECDetail();

        detail.codigoVara = Int32.Parse(row["codigoVara"].ToString());
     ....
    }

但是,当我运行测试时,它给了我一个System.ArgumentException:列“codigoVara”不属于表。这是CSV文件(它是从源复制到输出目录):

codigoVara,codigoComarca,numeroProcesso,numeroAlvara,tipoPessoa,sequencialMovimento,tipoCredito,codigoAgencia,codigoBanco,contaCorrente,valor,nomeParte,cpfCnpj,idDeposito,sequencialRegistro
3001,1,1235520148140300,14013001005,F,1,15,3372,1,242020,150.42,LEANDRO HERNANDEZ ALMEIDA,84887532253,1,1

我试过“符号,像”codigoVara“,但没有成功。 我还注意到一件有趣的事情:当我通过 索引 访问该列时,它可以工作!!!

detail.codigoVara = Int32.Parse(row[0].ToString());

提前感谢您的任何帮助=)

2 个答案:

答案 0 :(得分:3)

我认为您的.csv文件以带有BOM的UTF-8编码存储。如果是这样,那么错误的原因是MS测试运行器的错误,它通过将BOM包括在第一列名称中来错误地解析列名。其他列可以通过其名称访问。

答案 1 :(得分:1)

打开csv时,在Visual Studio文件中选择 - >高级保存选项。在新的对话框中编码:西欧(Windows) - 代码页1252

解决了我的问题