# 测试期望

本页介绍我们对添加到 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-cn/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.
