|
|
@ -16,7 +16,7 @@ Rust 中的测试函数是用来验证非测试代码是否是按照期望的方
|
|
|
|
|
|
|
|
|
|
|
|
作为最简单例子,Rust 中的测试就是一个带有 `test` 属性注解的函数。属性(attribute)是关于 Rust 代码片段的元数据;第五章中结构体中用到的 `derive` 属性就是一个例子。为了将一个函数变成测试函数,需要在 `fn` 行之前加上 `#[test]`。当使用 `cargo test` 命令运行测试时,Rust 会构建一个测试执行程序用来调用被标注的函数,并报告每一个测试是通过还是失败。
|
|
|
|
作为最简单例子,Rust 中的测试就是一个带有 `test` 属性注解的函数。属性(attribute)是关于 Rust 代码片段的元数据;第五章中结构体中用到的 `derive` 属性就是一个例子。为了将一个函数变成测试函数,需要在 `fn` 行之前加上 `#[test]`。当使用 `cargo test` 命令运行测试时,Rust 会构建一个测试执行程序用来调用被标注的函数,并报告每一个测试是通过还是失败。
|
|
|
|
|
|
|
|
|
|
|
|
每次使用 Cargo 新建一个库项目时,它会自动为我们生成一个测试模块和一个测试函数。这个模块提供了一个编写测试的模板,为此每次开始新项目时不必去查找测试函数的具体结构和语法了。因为这样当然你也可以额外增加任意多的测试函数以及测试模块!
|
|
|
|
每次使用 Cargo 新建一个库项目时,它会自动为我们生成一个测试模块和一个测试函数。这个模块提供了一个编写测试的模板,为此每次开始新项目时不必去查找测试函数的具体结构和语法了。当然你也可以额外增加任意多的测试函数以及测试模块!
|
|
|
|
|
|
|
|
|
|
|
|
在实际编写测试代码之前,让我们先通过尝试那些自动生成的测试模版来探索测试是如何工作的。接着,我们会写一些真正的测试,调用我们编写的代码并断言它们的行为的正确性。
|
|
|
|
在实际编写测试代码之前,让我们先通过尝试那些自动生成的测试模版来探索测试是如何工作的。接着,我们会写一些真正的测试,调用我们编写的代码并断言它们的行为的正确性。
|
|
|
|
|
|
|
|
|
|
|
@ -107,7 +107,7 @@ Cargo 编译并运行了测试。可以看到 `running 1 test` 这一行。下
|
|
|
|
<span class="filename">文件名:src/lib.rs</span>
|
|
|
|
<span class="filename">文件名:src/lib.rs</span>
|
|
|
|
|
|
|
|
|
|
|
|
```rust,noplayground
|
|
|
|
```rust,noplayground
|
|
|
|
{{#rustdoc_include ../listings/ch11-writing-automated-tests/listing-11-05/src/lib.rs:here}}
|
|
|
|
{{#rustdoc_include ../listings/ch11-writing-automated-tests/listing-11-05/src/lib.rs}}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
<span class="caption">示例 11-5:第五章中 `Rectangle` 结构体和其 `can_hold` 方法</span>
|
|
|
|
<span class="caption">示例 11-5:第五章中 `Rectangle` 结构体和其 `can_hold` 方法</span>
|
|
|
|