2014-09-23 82 views
1

我來形式JUnit和最近開始與我開始使用TestNG的項目。
TestNG有一個功能,您可以定義如果您的測試依賴於其他測試。單元測試:測試之間的依賴關係是一個好主意嗎?

這對我來說很令人驚訝,因爲我一直認爲測試需要獨立。他們必須創建自己的數據,斷言並繼續前進。這聽起來讓我感到困惑。

我想收集反饋,如果它是一個好主意。

+0

當您測試多步驟工作流程時,它可以是一種更簡潔的替代方法,即以單一測試方法轉儲長腳本。類似於需要登錄和導航的UI測試。 – chrylis 2014-09-23 13:02:47

+0

如何讓抽象單元測試類在單獨的函數中做到這一點? – daydreamer 2014-09-23 13:03:38

+0

這隻意味着現在每個下游測試都需要樣板。 – chrylis 2014-09-23 18:55:56

回答

1

在我看來,測試應該是獨立的。正如@daydreamer所說,一個好的做法是將一些util/shared代碼放在抽象類中以簡化測試代碼。讓我們考慮測試CRUD,我認爲測試這種事情的最好方法是:在設置方法中測試創建,在通常的測試中測試讀取和更新,並最終在清除方法中測試刪除。測試結果不能依賴資源(例如數據庫中的數據)。

1

我不使用testNG,但我認爲這個功能有時可能會有用。

我同意獨立測試的想法,這意味着爲一個測試創建的數據不應該被另一個測試使用,以避免副作用。

但是,有時您知道如果您的程序無法執行簡單的任務A,那麼它將無法執行更復雜的任務B.因此,如果測試A失敗,則您知道測試B也會失敗。例如,如果我的程序甚至無法解析'{"a":1}'(任務/測試A),我認爲我不能解析複雜的json字符串(任務/測試B)。

如果你有一個使任務A不可能的迴歸,每一個更復雜的操作(比如B)都會失敗,原因一見不見(報告將顯示X失敗的測試,而只修復一個會解決所有問題) 。如果您的代碼包含有關依賴關係的信息,您將直接知道哪些測試導致了問題(並且測試框架將不會運行肯定會失敗的測試)。

相關問題