Moles是前陣子91大推薦我用的Mock的Framework,它跟Moq與Rhino.Mocks這類的套件不同,Moq與Rhino.Mocks這類的Mock是對Interface或Abstract Class做Mock,而Moles是Mock整個CLR(Common Language Runtime),破除Moq等Mock套件的限制,非Interface或Abstract Class也可以Mock,而且還可以對Static Method來Mock,如DateTime.Now或File.Open等等Static Method,使原本在開發時不用為了方便測試而過度設計(如小弟之前為了方便測試,把DateTime又加了一層DateTimeProvider,當我看到這Framework後,就覺得我之前的作法非常的無聊,可參考Unit Test小技巧 : DateTime的Stub)。
Visual Studio 2010 Feature Packs 2之Silverlight自動化測試
- 10531
- 0
- Silverlight
在Visual Studio 2010上市沒多久後,很高興它推出了Coded UI的自動化測試,那時我的專案是跑Silverlight,要錄制時出現不支援的錯誤,只好又乖乖的自己當人工測試機,不過前幾天看到微軟推出Visual Studio 2010 Feature Packs 2套件,其中有一項功能是Create coded UI tests for Silverlight 4 applications,就興高彩烈安裝玩一翻。
寫CodedUI時如何尋找控制項的小技巧
- 6627
- 0
- Visual Studio
- 2010-11-23
在用CodedUI寫自動化測試時,我不喜歡用工具產生的代碼(相關資訊可參考手工製Coded UI Test(Visual Studio 2010新的UI自動化測試)),寫久了有一些經驗,例如找到控制項的一些的小技巧。
[小東西].Net 4.0增加的ObservableCollection類介紹
System.Collections.ObjectModel.ObservableCollection不是什麼新鮮的東西,早在幾年前,就存在Silverlight與WPF中,它跟一般的Collection最大的不同地方在,它可以被監控,當集合有所變動,會產生事件,可以控制變化,如UI亓件需要監控集合,當變動時UI必需有所調整,或新增資料到集合中,要做一些初始化的動作等等。
[小技巧].Net Framework 4.0 Enum新增的HasFlag方法
我想很多人會習慣用Enum作為旗標,因為同樣是以邏輯And與邏輯Or運算,會比用Int來的好閱讀,並竟誰會知道1、2、4代表什麼東西,尤其專案更多旗標時更難分辦,用Enum因為可以具名化,以文字來代替數字,很容易就可以了解數字代表的意義,不過在.Net Frameword 4.0之前要對Enum作運算,寫的比較多,較為麻煩,也曾寫過ExtensionMethod來簡化作業,不過.Net Frameword 4.0有內建的,就用內建的吧。
jQuery自製Plugin-Bind事件函式時檢查有沒有Bind過
因為寫一個豐富Ajax的網站,JavaScript一定會寫很多,有時莫明奇妙的一個HtmlElement Bind二個事件函式以上,可以照成click一次,卻Post二次以上,原因是不同的地方呼叫初始化的函式,所以我就自己寫了一個Plugin去避免這個問題。
jQuery事件處理系列-bind與live
jQuery的最底層的事件綁定有二個,bind與live,這二個function的差異在bind是針對HtmlElement綁定,而live是對HtmlDocument綁定,使用live時會將selector與事件函式儲存,當任何HtmlElement發生事件都會同時引發HtmlDocument的事件,會檢查引發事件的HtmlElement有沒有符合儲存的selector,符合才會呼叫事件處理函式。
C# ??運算子 當左邊是null時,回傳右邊的值
在寫JavaScript時,會下 var b = a || "test",當a是null時,b的值為test,用起來多簡捷,C# 也有這樣的語法,?? 運算子,當左邊是null時,回傳右邊的值。
繼承時,用new修飾詞的陷阱,覆寫property時的錯誤
有一次寫Code時,因為要寫泛型與非泛型的類別,為了多型所以泛型繼承非泛型,在將其中要泛型的property用new覆寫,可是執行實一直發生NullReferenceException,追縱下原來是用錯了property自動實作寫法,而且沒想到前幾天我的同事也跟我犯了同樣的錯誤。
用@font-face讓Opera Mobile 10顯示音標
我的英文因為不是很好,所以前些日子寫了一個放在Google App Engine,抓Google Dictionary的資料來,背單字小工具,最近增加手機版的,但是音標一直都無法顯示,我在我的Window Mobile 6.5上安裝了N個字型,改機碼都不行,試了好幾天快放棄時,我突然想起來我有一次問我們的設計師,在頁面中加上@font-face的用意何在,她叫訢我因為頁面有的字型在有些電腦可能沒有安裝,但下@font-face語法可以讓瀏覽器,下載字型,讓文字可以正確顯示,所以我就嘗試了@font-face,沒想到音標終於在我的Opera Mobile 10上正常顯示了。
jQuery套件-檢查頁面的欄位是否有變更
有時會在修改頁面中,檢查頁面的的欄位(text、checkbox、radio、select),沒有沒修改過,如果沒有修改,按下送出,此時是關閉視窗或轉頁,省去post出去,sever檢查與寫資料庫。
用EventLogReader查詢特殊EventLog
最近在寫Windows Task Scheduler相關的功能,想取某Task的EventLog,但用System.Diagnostics.EventLog只能取得基本的EventLog,後來發現應該要使用System.Diagnostics.Eventing.Reader.EventLogReader,而且EventLogReader可以下查詢,過濾出所需的資料。
C#仿Oracle Decode,將ValueType對應成String
在寫Page,有時會有int、bool等等要轉成文字輸出,如: <%: item.Enable ? "啟用" : "停用" %>,用? : 處理雖然方便,但如果要轉換的String加上二個以上,就非常難處理,可是Page的這三個<%: %>、<%= %>、<%# %>語法,不能用if或switch,因為有用過Oracle,很喜歡它的Decode函式,所以我就自己寫一組Extension Method來處理。
[小技巧]Entity Framework強型別Include
在Entity Framework中如果不設定為Lazy Loading Enable=true,勢必要自己處理關聯資料的載入,如:用Load或Include的,但因為Include的參數是用string,個人很討厭沒有IntelliSense,且String不小必改了TableName後,工具不易找到錯誤,所以小弟我寫一個Extension Method來擴展。
Visual Studio 單元測試的3種Initialize與Cleanup
- 16712
- 0
- Visual Studio
- 2010-11-26
Visual Stuido的單元測試有3種Initialize與Cleanup,讓開發測試時,可以在TestMethod執行前做一些初始化,結束後做一些清除,而這3種Initialize與Cleanup各針對了不同時期,如:我猜鮮少人知道的Assembly的Initialize與Cleanup,是在一個測試專案的所有TestMethod執行前呼叫Initialize,與一個測試專案所有TestMethod結束後呼叫Cleanup。
ASP.NET MVC TempData使用心得
在看TempData的說明時,有人說用一次就刪除,有人說一個Request就結束,在道聽途說下,有一次我的Code就出了Bug,一直死在TempData,最後看Source Code才發現,我對TempData的認知出了錯誤。
Visual Stuiod 自訂檔案比較合并工具
- 6540
- 0
- Visual Studio
因為我比較習慣WinMerge這套工具,改用TFS作為版本管理時,有點不適應內建的陽春工具,花了些時間找如何設定,以下是設定的方式。
[小技巧]自動化測試時NLog的訊息輸出到測試結果中
- 8095
- 0
- Visual Studio
平常我會用Visual Stuido的測試專案,寫一些自動化測試,如單元測試、整合測試等等,受測的Code中有很多地方用NLog記錄訊息,在正試的環境,會寫到資料庫,但測試時我會想把訊息輸出到每一個測試的結果中,除了節省資料庫外,也比較容易追縱錯誤訊息。
小技巧:專案切換32與64位元組件
- 11831
- 0
- Visual Studio
最近的一個專案中,有用到一個組件有分32位元與64位元的組件,如Chilkat .NET,因為Visual Studio 2010是32位元,如果開發時用64位元的組件,會發生一些問題,如AspNetCompiler編譯失敗,還有MVC專案的View,在Design時發生載入組件錯誤,使得無法使用IntelliSense,所以開發時沒辦法只能用32位元的組件,但佈署時又不希望人工去替換組件,怎麼辦呢?
自製計劃紙牌
自製計劃紙牌