簡體   English   中英

避免在用於單元測試時在 CSV 文件中非自願鍵入列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM