2014-09-06 45 views
1

我嘗試加載使用Microsoft Visual Studio 2013的代碼的CSV文件:C#的DataSource 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()); 
    .... 
    } 

但是,當我運行測試,它給了我一個系統。 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()); 

預先感謝任何幫助=)

+0

請參閱[這個答案]響應(http://stackoverflow.com/questions/1110588/數據驅動單元測試功能的問題與編碼CSV-)。更改文件上的編碼適用於我。 – julealgon 2014-11-24 14:17:01

回答

3

我覺得您的.csv文件存放的是UTF-8編碼w^ith BOM。如果是這樣,那麼錯誤的原因是MS測試運行器的錯誤,它通過將BOM包括到第一列名稱來錯誤地解析列名稱。其他列可通過其名稱訪問。

1

當csv打開時,請在Visual Studio文件 - >高級保存選項中進行選擇。在新的對話集編碼:西歐(Windows)中 - 代碼頁1252

問題解決了,我