2013-04-18 25 views
0

我已經問了過去的類似問題,但是我們拋開了這個問題,並且回到了問題中。 我們試圖實現它在動態創建的DLL上運行單元測試。動態創建程序集的單元測試

我們有一些API用於QA工程師將腳本插入到我們的應用程序中。質量保證工程師在我們的應用程序編輯器中編寫一些代碼,然後在運行時編譯代碼,並將其作爲程序集保存到磁盤上。

我們希望能夠在這個動態創建的程序集上運行一組測試。 我們迫使我們的QA團隊繼承一些基類並重寫一些方法,並且這些方法都是我們想要測試的方法...

你會如何實現這一點?任何想法都會有所幫助。謝謝。

+1

試着看一下現有的主題找到答案:http://stackoverflow.com/questions/13145030/run-unit-tests-on-dynamically-created-dll][1] [1 ]:http://stackoverflow.com/questions/13145030/run-unit-tests-on-dynamically-created-dll –

+0

這些也是我的問題... – StringBuilder

回答

2

您必須檢查動態程序集中的類型,並查找從您的基類派生的那些類型。假設他們都有參數構造函數,你可以這樣做:

Assembly dynamicAssembly = //generated 
var derivedInstances = dynamicAssembly.GetTypes() 
    .Where(t => !t.IsAbstract && t.IsSubclassOf(typeof(BaseClass))) 
    .Select(t => (BaseClass)Activator.CreateInstance(t)); 

foreach(BaseClass bc in derivedInstances) 
{ 
    //run tests 
} 
0

從上面您需要創建使用一些方法(反射單程)中動態創建的DLL中定義的類的實例看。將這些對象轉換爲您的基類類型,然後您應該能夠執行基類的方法。

我認爲更有意思的是:你如何定義執行某種方法時的正確結果?我想說你的QA工程師也需要指定預期的單元測試結果。

相關問題