關於我

我的相片
用心思考、保持熱情,把工作上的經驗作分享與紀錄。希望能夠跟大家一起不斷的成長~
顯示具有 ASP.NET Test 標籤的文章。 顯示所有文章
顯示具有 ASP.NET Test 標籤的文章。 顯示所有文章

AutoFixture

AutoFixture 看起來是類似 Rhino Mock ; Moq …等的工具.

是Codeplex 上的一項 open source 工具.

幫助我們在撰寫測試程式時,模擬未來準備開發或已開發的Class,

遇期幫助使用 Test Development Driven 的開發模式!

或更容易的撰寫好的Unit Test程式!

AutoFixture網頁

不一樣的簡報表達方式(Sample VS2010 Test Architecture)

今天看到一篇不錯的文章.

以往簡報不外乎使用PowerPoint.

這是大家常用的方式.

 

而今天看到的這位大師.他使用了 SilverLight 的 Deep Zoom 作為簡報工具。

他介紹了他為什麼使用的一些故事,如果大家有興趣,可看一下他的原文

而實際的簡報,效果真的相當的棒阿.

感覺清楚明瞭,有別於以往PowerPoint方式.

且也整合了完整的架構;說明;圖文;影片…

很不錯的做法,有空可以研究一下喔^_^

 

順帶一提,此範例是他介紹VS2010整個測試環境的架構與做法,

也是相當值得參考學習的教學。

Rhino Mocks 範例參考

要寫好的Unit Test,要盡可能的避免與一些其他因素的關聯,比方說資料庫、實體路徑、或參考檔案…等。

因此可將實做關聯的部分,截取出介面,用Mock的方式,模擬實做,即可做假的關聯資料。

不實際與環境關聯,成為好的、有信心的Unit Test!

下方為實際測試後,可Work的參考寫法Sample,不太理解寫法的差異?! (Mock可用於驗證,Stub可不驗證,只做假Return?!)   待日後再進一步的研究。

目前測試可執行的寫法如下,使用版本為 Rhino Mocks 3.6:

1.宣告出要Mock的Interface方法!
//Sample1
Idbservice service = MockRepository.GenerateStrictMock<Idbservice>(); 
//Sample2
Idbservice service = MockRepository.GenerateStub<Idbservice>(); 
//Sample3
Idbservice service = MockRepository.GenerateMock<Idbservice>(); 
//Sample4
//(必須於設定完成Stub後,搭配 service.Replay(); 使用!) 
Idbservice service = new MockRepository().StrictMock<Idbservice>();
//Sample5
//(必須於設定完成Stub後,搭配 service.Replay(); 使用!)
Idbservice service = new MockRepository().DynamicMock<Idbservice>();
2.宣告完成後,加入要Stub的Method或Attritube … 下方寫法也需搭配上方宣告使用,有其對應。
//Sample 1
service.Stub(s => s.GetMyObjsByID(1)).Return(new Myobj()); 
//Sample 2
//( 只能搭配 new MockRepository().StrictMock<Idbservice>(); 使用! )
SetupResult.For<MyObj>(service.GetMyObjsByID(1)).Return(new Myobj());
service.Replay();
3.最後在需使用Service的Class,傳入我們Mock好的Service.(當然此Class必須操作IdbService)
MyService myservice = new MyService(service);
這樣就可以使用我們已經Mock好的service。完全的與原環境關聯乾淨分離,不受其影響! 實際舉一個完整範例,大致程式如下:
//宣告要被Mock的Interface
Idbservice service = MockRepository.GenerateStub<Idbservice>(); 
//加入Stub的Method,與其回傳值。
service.Stub(s => s.GetMyObjsByID(1)).Return(new Myobj()); 
//使用Mock的Interface進行測試。
MyService myservice = new MyService(service);

加油,做好測試程式,提高系統交付品質保證!

Mock與Stub差異,好文參考 http://www.wretch.cc/blog/kojenchieh/15431659

加入測試參考注意項目

1. 先開啟測試檢視視窗

擷取1

2.可於測試檢視中,點選欲加入測試項目之測試案例右鍵屬性。

擷取2

3.即可於屬性視窗中,設定加入測試參考。

擷取3

4.加入後的程式碼如下!會多出DeploymentItem的Attribute。

擷取4

5.最後記得要設定,要讓測試檔案複製到測試輸出目錄中。

擷取

加入測試項目時,需注意,必須選擇[永遠複製],此檔才會於測試階段,自動被複製到測試目錄中,

測試才可順利進行喔!

不常用會忘記,註記一下。