Rust之自动化测试(二):控制测试如何运行

开发环境

  • Windows 10
  • Rust 1.72.1

 

  • VS Code 1.82.2

 项目工程

这里继续沿用上次工程rust-demo

控制测试如何运行

 正如cargo run编译您的代码,然后运行生成的二进制文件一样,cargo test在测试模式下编译您的代码,然后运行生成的测试二进制文件。cargo test生成的二进制文件的默认行为是并行运行所有测试,并捕获测试运行期间生成的输出,从而防止显示输出,并使读取与测试结果相关的输出变得更容易。但是,您可以指定命令行选项来更改此默认行为。

一些命令行选项转到cargo test,一些转到结果测试二进制文件。为了区分这两种类型的参数,您列出了连接到cargo test的参数,后跟分隔符 --,然后是连接到测试二进制的参数。运行cargo test --help 显示您可以使用cargo test的选项,运行cargo test --help显示您可以在分隔符后使用的选项。 

并行或连续运行测试

当您运行多个测试时,默认情况下它们使用线程并行运行,这意味着它们运行得更快,您得到反馈也更快。因为测试是同时运行的,所以您必须确保您的测试不依赖于彼此或者任何共享状态,包括共享环境,比如当前的工作目录或者环境变量。

例如,假设您的每个测试运行一些代码,这些代码在磁盘上创建一个名为test-output.txt的文件,并将一些数据写入该文件。然后,每个测试读取该文件中的数据,并断言该文件包含特定的值,该值在每个测试中是不同的。因为测试是同时运行的,所以一个测试可能会在另一个测试写入和读取文件之间的时间内覆盖文件。第二个测试将会失败,不是因为代码不正确,而是因为测试在并行运行时相互干扰。一个解决方案是确保每个测试写入不同的文件;另一个解决方案是一次运行一个测试。

如果您不想并行运行测试,或者如果您想要对使用的线程数量进行更细粒度的控制,那么您可以向测试二进制文件发送- test-threads标志和想要使用的线程数量。看一下下面的例子:

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

我们将测试线程的数量设置为1,告诉程序不要使用任何并行性。使用一个线程运行测试将比并行运行测试花费更长的时间,但是如果它们共享状态,测试将不会相互干扰。

显示功能输出

 默认情况下,如果测试通过&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值