11.1 怎么写测试代码
使用cargo生成lib项目时,会自自动生成测试代码样例。
测试代码在一个测试模块中,使用 #[cfg(test)] 声明模块,使用 #[test]声明函数,即表明函数是测试函数。
11.1.1 常用测试函数
常用的测试函数有 assert!,assert_eq!,assert_ne! 几个,可以接受参数和消息。消息支持格式化。
11.1.2 测试标记
可以使用 #[should_panic]声明测试测试,表示希望函数中断。如果中断,测试成功,否则测试失败。
11.1.3 返回Result
测试函数可以返回 Result,返回Result时,值为 Some测试成功,为Err测试失败。
11.2 控制测试代码的运行
11.2.1 指定输出
可以指定成功时是否输出信息,默认是不输出的,只有失败才输出
cargo test -- --show-output
11.2.2 控制是否单线程执行
如果用例之间有资源冲突,可以控制必须单线程执行测试,也可以指定线程数量。
cargo test -- --test-threads=1
11.2.3 指定函数执行
可以通过cargo test method_name直接指定哪个测试函数执行。这里函数名直接包括传入的名称,都会执行。
11.2.4 ignore忽略测试
在测试函数上标记#[ignore],测试会默认被忽略。
可以执行 --ignored 只执行被忽略的测试或--include-ignored执行全部测试。
11.3 测试代码组织
rust中有两种测试,单元测试和集成测试。
单元测试直接在代码文件中添加,使用 use supper::**引入外部模块,可以测私有函数。过程与之前说的一样, #[cfg(debug)] 模块, #[test]函数中使用即可。
集成测试则是放在单独的crate中,在工程目录下创建tests文件夹,只能测试公开函数。
测试不是很重点的东西,大略了解了一下,后续用到的时候再详细了解。