郑州做网站的大公司视频网站建设方案
news/
2025/10/2 7:24:28/
文章来源:
郑州做网站的大公司,视频网站建设方案,南开区网站建设,好的网站推荐下 感谢喜欢的话别忘了点赞、收藏加关注哦#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵#xff01;(#xff65;ω#xff65;)
11.6.1. 控制测试的运行方式
cargo test和cargo run一样#xff0c;cargo test也会编译代码并生成一个二进制文件用于测试#xff0c;…喜欢的话别忘了点赞、收藏加关注哦对接下来的教程有兴趣的可以关注专栏。谢谢喵(ω)
11.6.1. 控制测试的运行方式
cargo test和cargo run一样cargo test也会编译代码并生成一个二进制文件用于测试只不过cargo test是在测试模式下。
为cargo test添加参数可以改变cargo test的行为如果不添加任何参数那么就会执行默认行为
并行运行所有测试在测试通过的情况下捕获不显示所有输出使读取与测试结果相关的输出更容易。如果测试不通过输出是会显示的以便于程序员纠错。
命令行参数分为两类
针对cargo test的参数紧跟cargo test后针对生成的可执行文件放在--之后。例如cargo test --help这个参数会显示cargo test所有可用的参数。cargo test -- --help会显示所有能放在--之后的参数也就是所有针对可执行文件的参数。
11.6.2. 并行运行测试
在运行多个测试时默认会使用多个线程来并行地运行测试这样运行得更快但代价是这些测试之间不能有相互依赖而且它们不依赖于某个共享状态环境、工作目录、环境变量…。
如果两个测试都依赖于某个共享的状态其中一个测试运行完时把状态改了那么其他共享了相同状态的测试就会受到影响。
如果不想并行地运行测试或是希望精确地控制测试时所启用的线程数量那就可以使用--test-threads这个参数这个参数时传递给二进制文件的。在这个参数后紧跟着线程的数量。
比如说cargo test -- --test-threads1就是使用一个线程单线程这样的话如果执行多个测试它会比并行测试花费更多的时间。但它也有优点因为它是顺序执行所以这些测试因为共享状态而出现干扰的情况就比较少了。
11.6.3. 显式函数输出
默认如果测试通过Rust的test库会捕获不显示所有打印到标准输出的内容比如说println!输出的内容。如果测试不通过就会显示打印的内容和失败信息。
看个例子
fn prints_and_returns_10(a: i32) - i32 {println!(I got the value {a});10
}#[cfg(test)]
mod tests {use super::*;#[test]fn this_test_will_pass() {let value prints_and_returns_10(4);assert_eq!(value, 10);}#[test]fn this_test_will_fail() {let value prints_and_returns_10(8);assert_eq!(value, 5);}
}在被测试的函数prints_and_returns_10调用了println!输出传入的值然后返回10测试函数this_test_will_pass传了4给被输出函数所以被测试函数会打印4然后又把函数固定的返回值与10比较。这个测试会成功。测试函数this_test_will_fail传了8给被输出函数所以被测试函数会打印8然后又把函数固定的返回值与5比较。这个测试会失败。
测试结果
$ cargo testCompiling silly-function v0.1.0 (file:///projects/silly-function)Finished test profile [unoptimized debuginfo] target(s) in 0.58sRunning unittests src/lib.rs (target/debug/deps/silly_function-160869f38cff9166)running 2 tests
test tests::this_test_will_fail ... FAILED
test tests::this_test_will_pass ... okfailures:---- tests::this_test_will_fail stdout ----
I got the value 8
thread tests::this_test_will_fail panicked at src/lib.rs:19:9:
assertion left right failedleft: 10right: 5
note: run with RUST_BACKTRACE1 environment variable to display a backtracefailures:tests::this_test_will_failtest result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00serror: test failed, to rerun pass --lib测试结果中没有成功的测试所打印的句子但是有失败的测试打印的句子“I got the value 8”。
如果你想让成功的测试也打印句子就可以加一个参数:cargo test -- --show-output此时的输出如下
$ cargo test -- --show-outputCompiling silly-function v0.1.0 (file:///projects/silly-function)Finished test profile [unoptimized debuginfo] target(s) in 0.60sRunning unittests src/lib.rs (target/debug/deps/silly_function-160869f38cff9166)running 2 tests
test tests::this_test_will_fail ... FAILED
test tests::this_test_will_pass ... oksuccesses:---- tests::this_test_will_pass stdout ----
I got the value 4successes:tests::this_test_will_passfailures:---- tests::this_test_will_fail stdout ----
I got the value 8
thread tests::this_test_will_fail panicked at src/lib.rs:19:9:
assertion left right failedleft: 10right: 5
note: run with RUST_BACKTRACE1 environment variable to display a backtracefailures:tests::this_test_will_failtest result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00serror: test failed, to rerun pass --lib
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924660.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!