2011-04-29 120 views
5

我有一些NUnit測試使用TestCaseSource函數。不幸的是,我需要的TestCaseSource函數需要很長時間才能初始化,因爲它會遞歸地掃描文件夾樹以找到所有將傳遞到測試函數的測試圖像。 (或者它可以在每次運行時從文件列表中加載XML,但是仍然需要自動發現新的圖像文件。)NUnit延遲加載TestCaseSource

是否可以將NUnit屬性與TestCaseSource一起指定,以便NUnit不枚舉測試用例(不調用TestCaseSource函數),直到用戶點擊節點,或直到測試套件正在運行?

需要獲取存儲在文件夾中的所有測試圖像是項目需求,因爲無法訪問測試項目的其他人需要將新測試圖像添加到文件夾,而無需修改測試項目的源代碼碼。他們將能夠查看測試結果。

一些教條式的單元測試人員可能會反駁說我正在使用NUnit來做它不應該做的事情。我不得不承認,我必須滿足一個要求,NUnit是一個非常棒的GUI工具,可以滿足我的大部分要求,所以我不在乎它是否適合進行單元測試。

其他信息(從NUnit的文檔)上的對象施工

NUnit的定位在 時間的考驗加載測試的情況下,創建每個類的 實例與 非 - 靜態資源並建立一個要執行的測試列表 。每個源 對象僅在此 時間創建一次,並在加載所有測試 後銷燬。

如果數據源是在測試夾具 本身,該目的是如果沒有指定參數 使用適當構造函數 或設置在 TestFixtureAttribute夾具參數的默認 構造函數創建 。由於此對象在測試運行之前銷燬了 ,所以在 這兩個階段之間或在 不同運行之間沒有 通信,但通過 參數本身除外。

看起來,預先加載測試用例的目的是爲了避免TestCaseSource和測試執行之間的通信(或副作用)。這是真的?這是要求測試用例被加載的唯一原因嗎?

注:

需要的NUnit的修改,如記錄在http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.html

有計劃地引進此選項更高版本的NUnit。

回答

0

我不知道在GUI中延遲加載測試名稱的方法。我的建議是將這些測試移至單獨的程序集。這樣,您可以快速運行所有其他測試,並僅在需要時加載較慢的窮舉測試。