2014-02-27 32 views
0

我有一個函數GetAssemblytree(Assembly assembly),它需要一個程序集並以遞歸方式返回給定程序集引用的所有程序集。未知如何編寫函數的單元測試函數

我沒有得到如何編寫單元測試函數。

任何建議將不勝感激。

+3

創建一個虛擬程序集,引用一些其他程序集,並引用那些用於您的單元測試的程序集。 –

+0

@ user ..什麼是您正在使用的單元測試框架? –

+0

@Avinash - 視覺工作室單元測試 – user3359453

回答

2

C#程序集是一個抽象類。你可以簡單地擴展它,並且爲了測試而虛擬實現一個具體的虛擬類,然後一切都自然而然地起作用。

+0

看起來像一個解決方案,但沒有得到它:(..說我喜歡這個 - 類ConcreateAssembly:Assembly {List assemblies = new List ();}並使這個類的對象,我仍然不能打電話我的函數與這個類的對象.. – user3359453

+0

你當然可以做foreach(程序集中的程序集)GetAssemblytree(程序集); –

+0

okie ..可能是我得到它,但我的concreateassembly對象如何在運行時引用其他程序集? – user3359453

0

你不應該寫a它的單元測試,你應該寫幾個,並儘可能簡單。

首先,確保你清楚你想要你的功能做什麼。使每個要求儘可能清晰,簡單和原子化。然後爲每個需求定義測試。

你可以定義你的測試有點像這樣(只是一個粗略的草圖):

public void Should_return_null_if_assembly_does_not_reference_anything(){ 
    var result = YourFunctionToTest(yourEmptyDummyAssembly); 
    ... 
    // Check result in a suitable way 
} 

public void Should_return_expected_assemblies(){ 
    var result = YourFunctionToTest(otherDummyAssembly); 
    ... 
    // Check result in a suitable way 
} 

// etc... 

拇指要記住的主要原則,是讓事情變得簡單,並且是究竟是什麼真正明確你想檢查每個測試。一旦你清楚你的目標,自己寫測試並不會那麼困難。