【Rust】12. 自动化测试

12.1 编写测试

12.1.1 测试函数

  • 测试函数:在一个函数前加上一行 #[test] 注解将普通函数变成测试函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.1.2 assert! 宏

在这里插入图片描述
在这里插入图片描述

12.1.3 assert_eq! 与 assert_ne!

  • assert_eq!(left, right)assert_eq!(left, right) 在失败时会返回 leftright 两个值,比 assert!(xxx) 传递的信息更完善
  • 使用 assert_eq!assert_eq! 宏的值必须实现 PartialEq(用于断言两个值是否相等)与 Debug (在断言失败时打印他们的值)这两个派生 trait
  • 对于自定义的结构体与枚举,通常可以添加 #[derive(PartialEq, Debug)] 注解,来使用 assert_eq!assert_eq!

在这里插入图片描述
在这里插入图片描述

12.1.4 在断言中自定义失败信息

  • assert!assert_eq!assert_ne! 宏中,除了必需参数外,后面所有的参数都会传递给 format! 宏,作为失败时的输出进行打印

在这里插入图片描述
在这里插入图片描述

12.1.5 使用 should_panic 检查 panic

  • should_panic:在函数中的代码 panic 时会通过,而在其中的代码没有 panic 时失败
  • should_panic 属性有一个可选的 expected 参数:测试工具会确保错误信息中包含其提供的文本#[should_panic(expected = "Some text for debug...")]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.1.6 使用 Result<T, E> 编写测试

  • 使用 Result<T, E> 编写测试,在通过时返回 Ok 成员,在失败时返回 Err 成员
  • 不能对这些使用 Result<T, E> 的测试使用 #[should_panic] 注解
  • 为了断言一个操作返回 Err 成员,不要使用对 Result<T, E> 值使用问号表达式(?),而是使用 assert!(value.is_err())

在这里插入图片描述

12.2 控制测试如何运行

12.2.1 命令行参数分别传递

  • cargo test --help
  • cargo test -- --help

在这里插入图片描述

12.2.2 并行或连续的运行测试

  • $ cargo test -- --test-threads=1

在这里插入图片描述

12.2.3 显示函数输出

  • $ cargo test -- --show-output

在这里插入图片描述
在这里插入图片描述

12.2.4 运行指定的一部分测试(一):运行单个测试

  • cargo test xxx_fn:指定 xxx_fn 方法运行;
  • 注意:不能指定多个测试名称,只有传递给 cargo test 的第一个值才会被使用

在这里插入图片描述

在这里插入图片描述

12.2.5 运行指定的一部分测试(二):运行多个测试

  • cargo test xxx:指定所有带有 xxx 方法运行
  • 此外,也可以通过指定模块名来运行一个模块中的所有测试

在这里插入图片描述

12.2.6 忽略某些测试

  • 若不想执行某个测试,则在前面加上一行 #[ignore] 来忽略此测试
  • cargo test -- --ignored:只运行被忽略的测试
  • cargo test -- --include-ignored:运行全部测试(不管是否存在忽略的测试)

在这里插入图片描述
在这里插入图片描述

12.3 测试的组织结构

在这里插入图片描述

12.3.1 单元测试

  • 单元测试与他们要测试的代码共同存放在位于 src 目录下相同的文件中,具体规范为在每个文件中创建包含测试函数的 mod tests 模块,并且使用 #[cfg(test)] 注解来标注模块

在这里插入图片描述
在这里插入图片描述

12.3.2 集成测试(一):tests 目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12.3.3 集成测试(二):子模块

  • tests 目录中的子目录不会被作为单独的 crate 编译或作为一个测试结果部分出现在测试输出中(即将公共部分放在一个子文件夹中)

在这里插入图片描述
在这里插入图片描述

12.3.4 集成测试(三):二进制 crate

在这里插入图片描述

12.4 小结

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值