2016年10月31日 星期一

Repository 測試 - 使用 LocalDB - 範例程式碼 @ Github

將「Repository 測試 - 使用 LocalDB」這系列文章的範例程式碼給發佈到 Github 上面囉,完整的專案程式碼會比文章裡只有提到部分來得清楚(其實文章裡所提供的程式都已經是完整的內容),還是有很多開發者對於文字與部分程式的內容比較沒有感覺,所以有時間就把專案 Clone 一份下來看看。(還是有很多人習慣看程式,都已經把完整的專案公開了,就下載並且執行看看吧)

 


2016年10月30日 星期日

Repository 測試使用 LocalDB - Part.4

本來應該在 Part.3 這一篇就應該做個完結,但還是有一件事情要交代,所以又開了一篇來做說明,這一篇會有關於前陣子所發的文章「準備 Repository 單元測試的測試資料 - 產生匯入資料的 SQL Script」有關,在「Repository 測試使用 LocalDB - Part.3」裡面所使用的是 CSV 匯入測試資料,而接著就會說明使用 Insert SQL Command 的方式匯入測試資料的做法。

 


2016年10月26日 星期三

Repository 測試使用 LocalDB - Part.3

接續上一篇「Repository 測試使用 LocalDB - Part.2 」的內容,在上一篇已經完成使用 Entity Framework 建立與移除 LocalDB 的類別和方法,在第一篇「Repository 測試使用 LocalDB - Part.1 」也說明了要受測試的目標類別與方法,另外也建立了要在單元測試裡所使用的測試資料。

這一篇就要完成 Repository 的單元測試,會用到前面兩篇所建立的類別與資料,所以請各位要仔細看清楚囉。

 


2016年10月25日 星期二

2016年10月24日 星期一

Repository 測試使用 LocalDB - Part.1

去年有寫過一篇關於在測試專案裡使用 LocalDB 的文章「測試專案使用 LocalDB - 使用 Entity Framework 的情境」,的確是一個可以執行的做法,但是在多人開發的專案或是多分支開發的專案裡,這樣的做法會帶來一些問題,另外在一些環境裡執行單元測試時會遇到權限不足的問題(例如登入使用者並不具有 Administrator 權限時)會造成測試執行失敗,以致於最後我不在使用那種方式。

既然不用了也還是必須要有替代的方式去完成 Repository 的單元測試,於是我之後嘗試使用指令碼的方式在執行 Repository 測試前建立 LocalDB、執行測試後再移除 LocalDB,這樣的做法也真的可行,不過卻相當不穩定,當測試全部都執行正確時是不會有問題,但是一旦當一個錯誤發生問題時,建立的 LocalDB instance 就會被鎖住而無法正確釋放、移除,這樣的問題一直困擾著我很久。

接下來的幾篇文章將會介紹一個穩定而且不會發生測試失敗就把 LocalDB 鎖住的方式,藉助 Entity Framework 所提供的類別與方法來完成 Repository 測試的 LocalDB 建立與移除,讓我們能夠以更為簡易的方式來完成 Repositoy 的單元測試。

 


2016年10月16日 星期日

準備 Repository 單元測試的測試資料 - 產生匯入資料的 SQL Script

之前有介紹過一篇準備測試資料的文章「輸出測試用資料的 CSV 檔案 - 使用 LINQPad, AutoMapper, CsvHelper」,在大部分的情況下我蠻常使用這樣的操作方式來準備測試資料,但隨著單元測試的數量越來越多,而且因為在公司裡所開發的專案大部分還是使用 Dapper 來存取資料,所以 Repository 的單元測試就開始暴增,原本使用 CSV 檔案來匯入測試資料到 LocalDB 的前置作業就會成為讓整體測試作業執行時間緩慢的原因之一(有關怎麼使用 LocalDB 進行 Repository 單元測試與使用 CSV 檔匯入測試資料的內容,日後再寫篇文章來說明)。

為了解決使用 CSV 檔案匯入測試資料會因為資料轉換而使得測試時間拉長的情況,所以乾脆使用 SQL Dumper 及 ApexSQL Script 工具匯出 SQL Script 來直接匯入測試資料。

 


提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。