文森說技術

iOS, Web Development Notes
- , ,

測試中的 setUp 與 tearDown

在各種的 test framework 中都會看到這兩個 methods 的影子: setUp 以及 tearDown 。最後也會提到 Xcode 中有什麼額外的 method 可以使用。

流程

這兩個 methods , setUp 以及 tearDown ,前者會在每個 test case 執行前呼叫,後者則是在 test case 結束、紀錄測試結果後被呼叫。


基本的測試執行流程

說明

  • setUp - 設置環境。可以準備給該 class 中所有 test cases 使用的物件。
  • tearDown - 清理環境。釋放物件、清除設定等。

使用 setUp 優點在於可以確保每次測試使用到的共同物件都是新的之外,也可以確保每次使用的新物件初始化的方式也是一樣的。

XCTest with Xcode

in Xcode 5 and later

Apple 當然在這個部分也加了鹽。在 XCTest Framework 中,這兩個 methods 除了以 instance method 的方式存在之外,開發者還可以加入 class method 形式的 + (void)setUp 以及 + (void)tearDown 。這兩個 methods 就會在該 class 中所有的 test cases 的最前以及最後被執行。

流程圖如下:


在 Objective-C 中加上 class method 後的測試執行流程

小結

  • 在測試中使用 setUptearDown 的特性來重複使用程式碼,例如新建和初始化所有測試都要用到的物件
  • 不要在 setUptearDown 中初始化或清除 並非 所有測試都在使用的物件,否則會讓測試難以理解。這樣做的話會讓閱讀程式碼的人不知道哪些測試使用了 setUp 裡面的邏輯或物件,哪些測試沒有使用。

參考資料

如果覺得這篇對你有幫助,歡迎幫忙分享給其他人 😀