昨天我们学会了如何创建测试函数和使用测试函数
今天我们继续·往下学·
昨天我们都是直接cargo test
,这样是会执行所有可测试代码的。
但是大多数时候我们只想测试某一块测试代码,这里下面我直接就叫测试元了,方便点。
我们来看下test
相关的指令
终端执行cargo test --help
parallel
)或者按顺序(consecutively
)执行测试元rust
中默认是按照基于多线程并行的方式执行测试元,这样就可以同时执行多个测试元,减少测试所需要的时间。
不过有一点需要注意,那就是这几个测试元之间不能相互依赖或者需求同一个数据,不然容易形成死锁。
如果不想让他们并行或者想要更细粒度(fine-grained
)一点,你可以将线程调整为一个,这样同一时间就只能执行一个
-- --test-threads=1
表示--
之后可以执行test-threads=1
这个选项。=1
表示只有一个线程。
测试元执行的结果默认会输出在终端中,但是你println!
等想看的数据是不会出现在终端中的。
当然,如果是failed
的,你可以自定义错误语句并且它也会给出比较的数据(使用assert_eq!
)。
这个昨天的文章中说过了,就不多说了。
但如果你也想输出成功的语句或者println!
,那么就输入下面这个指令
来试下例子
正如前面说的,多线程测试会很快,但是不安全。而单线程则会很慢。这个时候就需要折中,选择想要的测试元来测试。
我们先来看下例子
先来看下默认的输出
额,跑的有点快。。可以看到都输出了。
我们再来试下测试单个
直接在后面加个名字就能测试目标测试元
不过这种方式只能是测试某一个,并不能做到全部都测试
和其他语言中的差不多,名字实际上也是模糊匹配的,我们有两个function
名字里都有个add
和two
,我们直接来试下
确实是找到了对应的测试元
有时候你只是不想测试一两个,这个时候你用名字去匹配其实也可以,但是这就得你手动去改测试元的名字,这样就挺麻烦的。
这个时候就可以用到ignore
,直接来看下怎么用
直接在#[test]
下一行朱时#[ignore]
。你以为还是输入选项?这样也麻烦,也是不符合人道滴。
那么过滤都过滤了,这些被过滤的不用白不用。
官方也提供了选项让我们反过来测试被ignore
的测试元
但是这么做的话,当你想测试所有测试元的时候就做不到了。
官方显然也知道这一点,所以这里还有一个选项
这样我们就能随心所欲的测试某个测试元了。
这两天的内容都挺轻松的(相比于第十章)。
最后,如果这篇文章对你有帮助的话,请务必点个赞谢谢
发布于 2022-12-19 22:03・IP 属地广东