这里写目录标题
测试函数
- 在函数上面一行加上#[test],函数就会变成测试函数
- 运行测试:cargo test
- 当使用cargo创建library项目时,会生成一个test module,里面有一个test函数
- 可以添加任意数量的test module或者函数
断言
使用assert!宏检查测试结果
使用assert_eq!和assert_ne!测试相等性
- 判断两个参数是否相等或不等
- 断言失败时,自动打印出两个参数
- 参数顺序不重要
添加自定义错误信息
fomat!用于拼接字符串 ,例如format!(“Hello{}”,name)
用should_panic检查恐慌
让should——panic更加精确
如果发生的不是该恐慌就测试失败
在测试中使用Result<T,E>
控制测试如何运行
- 改变cargo test的行为: 添加命令行参数
- 默认:
- 并行运行
- 所有测试
- 捕获所有输出(不显示),使得读取与测试结果相关的输出更容易
- 命令行参数:
- 针对cargo test的参数:紧跟cargo test后
- 针对测试可执行程序:放在–之后
- cargo test --help
- cargo test – --help 显示catgo test可以用在两个-之后的参数
并行 串行运行测试
- 运行多个测试:默认多个线程并行运行
- – test-threads参数 后面紧跟线程数量
- cargo test – --test-threads=1
显式函数输出
按照名称运行测试
运 行子集
运行单个测试:cargo test + 子集测试的名称 参数只能有一个
运行多个测试 :指定测试名的一部分(模块名也可以) cargo test add
忽略某些测试,运行剩余测试
ignore 属性(attribute)
不运行 expensive_test
test – --ignored 运行被忽略的测试``
测试的组织
测试的分类
Rust对测试的分类
- 单元测试
- 集成测试
【cfg(test)】标注
测试私有函数
集成测试
test目录
创建集成测试:tests目录
tests目录下的每个测试文件都是一个单独的crate