# 測試預期結果

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

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

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

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

## 單元測試

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

應該包含：

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

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

## 系統測試

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

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

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

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

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

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

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

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

系統測試應：

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://primer2.dynamobim.org/zh-tw/1_developer_primer_intro/1-testing-expectations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
