diff --git a/src/ch11-01-writing-tests.md b/src/ch11-01-writing-tests.md index 199a990..fec71b5 100644 --- a/src/ch11-01-writing-tests.md +++ b/src/ch11-01-writing-tests.md @@ -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`: @@ -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!` 宏在传递给它的两个值不相等时通过,而在相等时失败。在代码按预期运行,我们不确定值 **会** 是什么,不过能确定值绝对 **不会** 是什么的时候,这个宏最有用处。例如,如果一个函数保证会以某种方式改变其输出,不过这种改变方式是由运行测试时是星期几来决定的,这时最好的断言可能就是函数的输出不等于其输入。