测试属性
以下 属性 用于指定用于执行测试的函数。
将 crate 编译为 "test" 模式将启用构建测试函数以及用于执行测试的测试工具。
启用测试模式还启用 test
条件编译选项。
test
属性
test
属性 用于标记一个函数作为测试用例执行。这些函数只在测试模式下编译。
测试函数必须是无参、单态函数,并且返回类型必须实现 Termination
trait ,例如:
()
Result<T, E> where T: Termination, E: Debug
!
注意: 测试模式是通过向
rustc
传递--test
参数或使用cargo test
来启用的。
测试框架将调用返回值的 report
方法,并根据 ExitCode
代表的终止状态将测试分类为已通过或已失败。特别地:
- 返回
()
的测试只要终止且未发生恐慌即为通过。 - 返回
Result<(), E>
的测试只要返回Ok(())
即为通过。 - 返回
ExitCode::SUCCESS
的测试通过,返回ExitCode::FAILURE
的测试失败。 - 无法终止的测试既不通过也不失败。
ignore
属性
一个被标记为 test
的函数也可以被标记为 ignore
。
ignore
属性 告知测试框架不要将该函数作为测试执行,但在测试模式下它仍会被编译。
ignore
属性可以选择用 元名称值字符串 语法编写,以具体说明测试被忽略的原因。
注意:
rustc
测试框架支持--include-ignored
标志,以强制运行被忽略的测试。
should_panic
属性
带有 test
属性的返回类型为 ()
的函数还可以带有 should_panic
属性。 should_panic
属性 表示仅当函数实际恐慌时,测试才会通过。
should_panic
属性可以选择性地接受一个输入字符串,该字符串必须出现在恐慌消息中。
如果在消息中未找到该字符串,则测试将失败。可以使用 元名称值字符串 语法或具有 expected
字段的 元列表名称值字符串 语法传递该字符串。