Skip to content

Commit

Permalink
Merge pull request #837 from bobo8035/main
Browse files Browse the repository at this point in the history
修正错误ch11-01
  • Loading branch information
KaiserY authored Dec 7, 2024
2 parents 7d31b9a + 04182ba commit dfeeeb2
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/ch11-01-writing-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ Cargo 编译并运行了测试。可以看到 `running 1 test` 这一行。下
{{#include ../listings/ch11-writing-automated-tests/listing-11-07/output.txt}}
```

我们传递给 `assert_eq!` 宏的第一个参数 `4` ,它等于调用 `add_two(2)` 的结果。测试中的这一行 `test tests::it_adds_two ... ok``ok` 表明测试通过!
我们创建一个名为 `result` 的变量,用于保存调用 `add_two(2)` 的结果。然后我们将 `result``4` 作为参数传递给 `assert_eq!`。测试中的这一行 `test tests::it_adds_two ... ok``ok` 表明测试通过!

在代码中引入一个 bug 来看看使用 `assert_eq!` 的测试失败是什么样的。修改 `add_two` 函数的实现使其加 `3`

Expand All @@ -192,9 +192,9 @@ Cargo 编译并运行了测试。可以看到 `running 1 test` 这一行。下
{{#include ../listings/ch11-writing-automated-tests/no-listing-04-bug-in-add-two/output.txt}}
```

测试捕获到了 bug!`it_adds_two` 测试失败,错误信息告诉我们断言失败了,它告诉我们 `` assertion failed: `(left == right)` `` 以及 `left``right` 的值是什么。这个错误信息有助于我们开始调试:它说 `assert_eq!``left` 参数是 `4`,而 `right` 参数,也就是 `add_two(2)` 的结果`5`。可以想象当有很多测试在运行时这些信息是多么的有用。
测试捕获到了 bug!`it_adds_two` 测试失败,错误信息告诉我们断言失败了,它告诉我们 `` assertion failed: `(left == right)` `` 以及 `left``right` 的值是什么。这个错误信息有助于我们开始调试:它说 `assert_eq!``left` 参数(也就是 `add_two(2)` 的结果`5`,而 `right` 参数是 `4`。可以想象当有很多测试在运行时这些信息是多么的有用。

需要注意的是,在一些语言和测试框架中,断言两个值相等的函数的参数被称为 `expected``actual`,而且指定参数的顺序非常重要。然而在 Rust 中,它们则叫做 `left``right`,同时指定期望的值和被测试代码产生的值的顺序并不重要。这个测试中的断言也可以写成 `assert_eq!(add_two(2), 4)`,这时失败信息仍同样是 `` assertion failed: `(left == right)` ``
需要注意的是,在一些语言和测试框架中,断言两个值相等的函数的参数被称为 `expected``actual`,而且指定参数的顺序非常重要。然而在 Rust 中,它们则叫做 `left``right`,同时指定期望的值和被测试代码产生的值的顺序并不重要。这个测试中的断言也可以写成 `assert_eq!(4, result)`,这时失败信息仍同样是 `` assertion failed: `(left == right)` ``

`assert_ne!` 宏在传递给它的两个值不相等时通过,而在相等时失败。在代码按预期运行,我们不确定值 **** 是什么,不过能确定值绝对 **不会** 是什么的时候,这个宏最有用处。例如,如果一个函数保证会以某种方式改变其输出,不过这种改变方式是由运行测试时是星期几来决定的,这时最好的断言可能就是函数的输出不等于其输入。

Expand Down

0 comments on commit dfeeeb2

Please sign in to comment.