【茶包射手筆記】NUnit 發生 OutOfMemoryException

從 Github 取得 ServiceStack.Text 想幫忙修 Bug。專案使用 NUnit 跑單元測試,為方便測試,在 Visual Studio 2017 安裝 NUnit 3 Test Adapter,安裝後可由 Test Explorer 直接執行測試。

不料,編譯後 Test Explorer 只找到一項測試,Output / Tests 則出現大量 OutOfMemoryException:

Exception System.OutOfMemoryException, Exception converting ServiceStack.Text.Tests.XmlSerializerTests.serialize_Territory
已發生類型 'System.OutOfMemoryException' 的例外狀況。

爬文找到解法,原因出在 NUnit 還不支援 .NET Core 使用的新版 Portable PDB 格式(未來的新標準),而 ServiceStack.Text.Tests 是一個 .NET Core 專案(同時支援 net45 與 netcoreapp1.0),.NET Core 版本的 PDB 導致問題。解決方法是在 csproj 中加入以下 PropertyGroup,指定當 Target 不等於 netcoreapp1.0 時 DebugType = Full 以產生 Windows 版 PDB:(預設 DebugType 為 Portable,Full 應源自 Full Framework,不是指完整版 PDB,參考

  <PropertyGroup>
    <DebugType Condition="'$(TargetFramework)' != '' AND '$(TargetFramework)' != 'netcoreapp1.0'">Full</DebugType>
  </PropertyGroup>

加入設定後,Test Explorer 順利找到測試項目並成功跑完,綠燈!

歡迎推文分享:
Published 21 June 2017 12:04 AM 由 Jeffrey
Views: 3,402



意見

# Tom said on 20 June, 2017 08:57 PM

不知道大大修哪個問題?

我用這個lib解析TWSE的收盤數據csv檔,會有解析結果和excel不同的狀況,原因是twse csv內的雙引號數量未對稱造成,但是excel可以正確解讀

# Jeffrey said on 20 June, 2017 09:50 PM

to Tom, 我遇到的問題也是因特殊符號導致讀取結果不符預期,你如果能提供可重現問題的字串範例,我一併納入測試範圍。

# Tom said on 22 June, 2017 03:42 AM

找到大大你在 GitHub 的 Fork 了, 可惜沒有 issue 功能讓我提供檔案和測試資訊, 我只能寫在這邊了

www.twse.com.tw/.../MI_INDEX

拿到這個 csv 後我是用 CsvReader.ParseLines(csv_data); 逐行拆解, 但是到了 140 行之後就無法拆解, 會把後面所有資料變成第 141 行結束....但用 excel 可以解析到 1157 行

報案以上~~

# Jeffrey said on 23 June, 2017 05:19 AM

to Tom, 問題出在141行未遵守CSV規範將包在雙引號中的雙引號置換成兩個雙引號: ( 參考:https://goo.gl/2zk3SP

   ""漲跌價差"為當日收盤價與前一日收盤價比較。",

理論上應寫成

   """漲跌價差""為當日收盤價與前一日收盤價比較。",

由於不符規範,導致後面判讀全錯。依我的認知,ServiceStack.Text應不會為了包容無效格式修改程式,這類狀況理應請源頭修正(甘五摳零?),如果源頭不動如山,只好摸摸鼻子自己洗資料。

# Tom said on 23 June, 2017 11:28 PM

源頭應該不會鳥我,哭

感謝黑大幫我花了時間診斷

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<June 2017>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication