erg/doc/zh_CN/dev_guide/test.md
2023-01-07 11:44:20 +08:00

25 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 测试
[![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3Derg-lang%26repos%3Derg%26ref%3Dmain%26path%3Ddoc/EN/dev_guide/test.md%26commit_hash%3D3e4251b9f9929891dd8ce422c1ed6853f77ab432)](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/dev_guide/test.md&commit_hash=3e4251b9f9929891dd8ce422c1ed6853f77ab432)
测试是确保代码质量的重要部分
使用以下命令执行测试
``` sh
cargo test --features large_thread
```
由于cargo需要一个小线程来运行测试我们使用 `large_thread` 标志来避免堆栈溢出
## 放置测试
根据实现的特性来安排它们。将解析器测试放置在`erg_parser/tests`下,将编译器(类型检查器等)测试放置在`erg_compiler/tests`下,将用户可以直接使用的语言特性测试放置在`erg/tests`下(然而,这些测试目前正在开发中,不一定按照这种惯例安排)
## 如何编写测试
有两种类型的测试。positive测试和negative测试。
positive测试是检查编译器是否按预期运行的测试而negative测试是检查编译器是否正确地输出无效输入的错误。
由于编程语言处理器的性质,在所有软件中,它们特别容易受到无效输入的影响,并且必须始终将错误呈现给用户,因此后者也必须得到照顾。
如果你在语言中添加了一个新特性你至少需要写一个positive测试。另外如果可能的话请写同时编写negative测试。