# 測試預期結果

本頁介紹我們對 Dynamo 新增程式碼進行測試時所預期的結果。

現在，您已經有一個想要增加的新節點。真棒。現在該來做一些測試。這樣做有兩個原因。

1. 測試有助於找出沒有作用的地方
2. 當某人變更了內容而弄壞節點時，應該也會讓測試失效。如此一來，讓測試失效的人就必須去修復它。如果這樣沒有讓測試失效，就表示主要是您要處理模型被破壞的使用者。

Dynamo 中的測試分為兩大類：單元測試、系統測試。

## 單元測試

盡可能不要進行單元測試。如果您建立了一個透過 C# zero touch 節點計算平方根的節點，則最好只測試該 DLL，並且讓 C# 直接呼叫該程式碼。單元測試甚至不該包含 Dynamo。

應該包含：

* 正面測試 (做正確的事情)
* 負面測試 (即使給定不當輸入也不會出現不當結果)
* 迴歸測試 (有人在您的程式碼中發現錯誤時，請撰寫一個測試確保它不會重複發生)

測試應該小巧、快速、可靠。大多數測試應該是單元測試。

## 系統測試

系統測試會在多個元件上運作，測試它們如何一起配合。這類測試應謹慎使用和設計。

為什麼？這類測試的執行成本很高。讓測試套件以越少延遲執行越好。

在撰寫系統測試時，首先要做的是查看[此](https://github.com/DynamoDS/Dynamo/blob/master/doc/system/Layer%20Diagram.pdf)圖表，找出您要涵蓋的子系統。

理想情況下會有一系列的漸進式測試，涵蓋越來越多的互動區塊，當測試開始失敗時，就可以很快找出問題所在。

需要系統測試的事項範例：

* 一種新類型的 Revit 節點，它會在追蹤中儲存多個元素，而非單一元素
* 以不同方式顯示資料的新 Watch 節點

不需要系統測試的事項範例：

* 新的數學節點
* 字串處理資源庫

系統測試應：

* 堅持正確的行為
* 堅持沒有病態行為，例如沒有例外狀況
