国外自助建站系统,wordpress 菜单加图标,wordpress需要配置文件,深圳华强北化妆品概述
Rust内置了单元测试的支持#xff0c;这点和Golang一样#xff0c;非常的棒#xff0c;我超级喜欢单元测试#xff01;#xff01;#xff01;
本节课的代码还是基于之前的求公约数的案例。 之前的完整代码如下#xff1a;
fn gcd(mut n: u64, mut m: u64) -这点和Golang一样非常的棒我超级喜欢单元测试
本节课的代码还是基于之前的求公约数的案例。 之前的完整代码如下
fn gcd(mut n: u64, mut m: u64) - u64 {assert!(n ! 0 m ! 0);while m ! 0 {if m n {let t m;m n;n t;}m m % n;}n
}fn main() {let r: u64 gcd(88, 99);println!({}, r);
}添加单元测试代码
基于之前的代码我们可以添加如下测试代码
#[test]
fn test_gcd(){assert_eq!(gcd(14, 15), 1);assert_eq!(gcd(2*3*5*11*17, 3*7*11*13*19), 3*11);
}#[test]是一个标记将test_gcd标记为一个测试函数在正常编译的时候会跳过它。但是如果使用 cargo test命令运行程序则会自动包含并调用它。
在Rust中因为这种机制的存在我们可以将测试代码紧挨着函数编写而不必单独为测试代码开辟一个新的文件。
实战单元测试
创建项目
cargo new hello修改代码
cd hello
vim src/main.rs完整代码如下
fn gcd(mut n: u64, mut m: u64) - u64 {assert!(n ! 0 m ! 0);while m ! 0 {if m n {let t m;m n;n t;}m % n;}n
}#[test]
fn test_gcd(){assert_eq!(gcd(14, 15), 1);assert_eq!(gcd(2*3*5*11*17, 3*7*11*13*19), 3*11);
}fn main() {let r: u64 gcd(88, 99);println!({}, r);
}执行测试
zhangdapengzhangdapeng:~/code/hello$ cargo testCompiling c10_func v0.1.0 (/home/zhangdapeng/code/hello)Finished test profile [unoptimized debuginfo] target(s) in 0.34sRunning unittests src/main.rs (target/debug/deps/c10_func-7066c0fd0fc42bb9)running 1 test
test test_gcd ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
运行代码
zhangdapengzhangdapeng:~/code/hello$ cargo testCompiling c10_func v0.1.0 (/home/zhangdapeng/code/hello)Finished test profile [unoptimized debuginfo] target(s) in 0.34sRunning unittests src/main.rs (target/debug/deps/c10_func-7066c0fd0fc42bb9)running 1 test
test test_gcd ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
代码清理
zhangdapengzhangdapeng:~/code/hello$ cargo cleanRemoved 52 files, 14.0MiB total