2014-09-19 78 views
4

有沒有辦法給nUnit一個測試層次結構,以便以後的測試不會在早期測試失敗時運行?nUnit測試相互依賴性/層次結構

假設我有一組數據需要處理和排序,我有一個測試排序完成的UT,還有一些其他的測試,測試處理和假設訂購已經成功,因此如果這是錯誤的,將會虛假地失敗。

(並假設打破這種依賴是不可行的! - 我知道這是理想的解決方案)

然後,它會很高興地告訴NUnit的......「如果排序測試失敗,那麼甚至不打擾這些(不確定,也許?)因爲我們知道他們不會工作。「

很明顯,我可以手動完成,但是這會給測試增加很多基本上不相關的東西(我們有很好的短測試,所以「調用頭測試並捕獲異常」塊將會增加一些長度測試)

我希望nUnit可能JustDoThis已經,但我不能在任何地方看到它?

+0

可能重複[如何忽略基於NUnit的另一個測試的測試?](http://stackoverflow.com/questions/1782496/how-do-i-ignore-a-test-based-another-test-in-nunit) – 2014-09-19 14:32:08

回答

6

正如您的問題所述,最「適當的」修復方法是打破測試之間的依賴關係。如果你真的想這樣做,NUnit確實支持假設(有點像斷言,但是在你的測試開始時),它可以用來檢查影響你的測試的有效性的一些先決條件。搜索「NUnit假設」帶來了以下StackOverflow問題,看起來類似於這個:How do I ignore a test based on another test in NUnit?

+0

完美...謝謝! – Brondahl 2014-09-19 14:05:13

1

我認爲單元測試的層次結構是一個壞主意。正如你所說的,你的單元測試很小,很好,當然也是獨立的。它應該保持不變。添加一些依賴關係可以打破它。

爲了提供一些解決方法,我建議使用Category屬性與/ stoponerror選項結合使用。您可以按照其重要性對測試進行分組,並按照這些類別運行它。並且使用stoponerror選項將在第一次失敗時停止執行其餘的測試。我不確定這是否也適用於與Visual Studio集成,但您可以使用NUnit命令行工具來實現此目的。請參閱this

+0

但是在這種情況下,我們不是*添加*依賴項......我們只是突出顯示現有的依賴關係。 不過,在某些情況下,類別方法似乎是接受答案的一個很好的選擇。 – Brondahl 2014-09-19 14:06:00