2011-01-13 28 views
2

我有一個接口很大的對象,我想記錄在用戶會話期間完成的所有方法調用。理想的情況下調用順序將作爲源代碼可用:記錄對象方法調用以生成自動化測試

myobj.MethodA(42); 
myobj.MethodB("spam", false); 
... 

我會那麼這段代碼轉換爲測試用例有一種自動化的煙霧/負載測試。

WCF Load Test可以爲WCF服務做到這一點,CodedUI測試記錄儀可以爲UI做到這一點。 POCO課程有哪些選擇?我有能力編輯應用程序代碼並用某些錄製/轉發代理替換有問題的對象。

回答

1

你可以想象用Rhino.Mocks做到這一點。

var code_builder = new StringBuilder(); 

var myobj = MockRepository.GenerateStub<IMyObj>(); 

myobj.Stub(x => x.MethodA(Arg<int>.Is.Anything)) 
    .WhenCalled(x => code_builder.AppendLine(
     string.Format("myobj.MethodA({0});", x.Arguments[0])); 

myobj.Stub(x => x.MethodB(Arg<string>.Is.Anything, Arg<bool>.Is.Anything)) 
    .WhenCalled(x => code_builder.AppendLine(
     string.Format("myobj.MethodB({0}, {1});", x.Arguments[0], x.Arguments[1])); 

一旦你記錄所有的值,你已經得到了在StringBuilder所有來電,你可以與你會做什麼。

創建一個接口的新實現可能實際上是少一些工作,而該接口在每種方法中以類似的方式構建代碼。您可能需要實現函數以便用戶完成會話,在這種情況下,您可以創建一個派生自裝飾或裝飾您的接口實現的類,並在轉發呼叫時添加此代碼構建功能到/從「正常」對象。

+0

謝謝,但這需要爲每種方法編寫`string.Format`,並且該接口太大而無法手工完成。 – Constantin 2011-01-13 21:43:08

相關問題