測試的剖析

簡單來說,測試旨在查看特定行為的結果,並確保該結果與您期望的結果一致。 行為不是可以通過經驗衡量的東西,這就是為什麼編寫測試可能具有挑戰性。

「行為」是指系統對特定情況和/或刺激做出反應的方式。 但是,事情如何為什麼完成,不如完成什麼重要。

您可以將測試分為四個步驟

  1. 安排 (Arrange)

  2. 執行 (Act)

  3. 斷言 (Assert)

  4. 清理 (Cleanup)

安排 (Arrange) 是我們為測試準備所有內容的地方。 這意味著幾乎所有內容,除了「執行 (act)」之外。 它是排列多米諾骨牌,以便執行 (act)可以在一個改變狀態的步驟中完成它的工作。 這可能意味著準備對象、啟動/終止服務、將記錄輸入數據庫,甚至像定義要查詢的 URL、為尚不存在的用戶生成一些憑據,或者只是等待某些進程完成。

執行 (Act) 是啟動我們要測試的行為的單一、改變狀態的操作。 這種行為是執行更改被測系統 (SUT) 狀態的操作,我們可以查看由此產生的已更改狀態,以判斷行為。 這通常採用函數/方法調用的形式。

斷言 (Assert) 是我們查看結果狀態並檢查它在塵埃落定後是否看起來符合我們的期望的地方。 我們在這裡收集證據,說明行為是否與我們的期望一致。 我們測試中的 assert 是我們進行測量/觀察並對其應用判斷的地方。 如果某物應該是綠色的,我們會說 assert thing == "green"

清理 (Cleanup) 是測試在自身之後進行清理的地方,因此其他測試不會受到意外影響。

在其核心,測試最終是執行 (act)斷言 (assert) 步驟,而安排 (arrange) 步驟僅提供上下文。 行為存在於執行 (act)斷言 (assert) 之間。