测试运行顺序:单元测试(同处于源文件中,以 #[cfg(tests)] 标记 mod,以 #[test] 标记 function)、集成测试(位于项目根路径下的 tests 目录下,不需要 #[cfg(tests)] 标记,但依然需要 #[test] 标记 function)、文档测试。

一、选项

cargo test [testN] -- --test-threads=1 --nocapture --ignored

[testN]:可以指定单个测试模块或测试用例的完整名称单独运行,不能批量指定;但可以指定部分名称,所有名称包含此字符串的模块(包含其中所有测试用例)、测试用例均会被执行;

--test-threads=1:默认是多线程并发运行测试用例,运行速度快,但会造成输出内容交叉,指定单线程运行可保证有序输出;

--nocapture:默认测试通过的用例,其输出内容将会被捕获(屏蔽),指定此选项将会一同显示这些内容;

--ignored:被标记为 #[ignore] 的测试用例默认不会被执行,指定此项以运行这些测试用例(通常是预计耗时很长的测试);

...

二、单元测试示例

#[derive(Debug)]
pub struct Rectangle {
length: u32,
width: u32,
} impl Rectangle {
pub fn can_hold(&self, other: &Rectangle) -> bool {
return self.length > other.length && self.width > other.width;
} pub fn add_two(&mut self) {
self.length += 2;
self.width += 2;
}
} #[cfg(test)]
mod should_panic {
#[test]
fn notihing() {
println!("nothing...");
} } #[cfg(test)]
mod tests {
use super::*; #[test]
fn explotion() {
assert_eq!(2 + 2, 4);
} #[test]
fn hellokitty() {
assert_ne!(1 + 1, 4);
} #[test]
fn larger_can_hold_smaller() {
let larger = Rectangle { length: 8, width: 7 };
let smaller = Rectangle { length: 5, width: 1 }; assert!(larger.can_hold(&smaller));
} #[test]
fn smaller_cannot_hold_larger() {
let larger = Rectangle { length: 8, width: 7 };
let smaller = Rectangle { length: 5, width: 1 }; assert!(!smaller.can_hold(&larger));
} #[test]
#[ignore]
#[should_panic(expected = "t")]
fn should_panic() {
panic! ("test panic");
} #[test]
fn print_add2() {
let mut model = Rectangle { length: 8, width: 1 };
model.add_two(); assert_eq!(model.length, 10);
}
}

...

Rust <5>:测试的更多相关文章

  1. Go语言的成功也预示着Rust的成功【转】

    从整体的角度来看Go,很难理解他是怎么取得这么大的成功的.从理论的角度上来说Go是一门非常糟糕的语言,就算是和C++或者Ada之类旧语言相比也是这样. 从整体的角度来看Go,很难理解他是怎么取得这么大 ...

  2. Rust入坑指南:步步为营

    俗话说:"测试写得好,奖金少不了." 有经验的开发人员通常会通过单元测试来保证代码基本逻辑的正确性.如果你是一名新手开发者,并且还没体会到单元测试的好处,那么建议你先读一下我之前的 ...

  3. Rust 与 Golang - 何时使用它们?

    [转自 Fizer Khan的<Rust Vs Golang - When to use them?>(翻译)] 在过去的十年中,Rust 和 Go 两种新的编程语言主要为企业开发而开发和 ...

  4. 写了一个具有future接口的rust测试代码

    写了一个具有future接口的rust测试代码 但没有实现future功能,内部是直接求值 struct Future<T> { t: T, } impl<T> Future& ...

  5. Rust第一次---centos 7下的安装,配置,测试

    现在安装都依赖于网络,命令比较简单. 一,运行脚本,安装runstup 1,运行如下脚本: curl https://sh.rustup.rs -sSf | sh 2,输入默认项1,完成余下的安装 二 ...

  6. Rust初步(五):Rust与C#性能比较

    我学习Rust的目的并不是说期望用它来取代掉现有的开发平台或语言.相反,我认为当前绝大部分研发团队,都不可能只用一个平台或者一个语言. 当组织增长,他们越来越依赖大量的编程语言.不同的编程语言有不同的 ...

  7. VisualRust + VisualGDB编辑调试Rust

    Rust到1.6了,到了一个相对成熟的阶段,可以试用做一些项目了.但是写的代码越多,就会发现一个好的IDE相当于效率的一半.这里分享我 在Visual Studio的使用Rust的经验. 首先需要下载 ...

  8. 计算文件的MD5值(Java & Rust)

    Java public class TestFileMD5 { public final static String[] hexDigits = { "0", "1&qu ...

  9. Writing A Threadpool in Rust

    文 Akisann@CNblogs / zhaihj@Github 本篇文章同时发布在Github上:https://zhaihj.github.io/writing-a-threadpool-in- ...

随机推荐

  1. python3+django2 个人简单博客实现 -正在施工

  2. Git 内部原理

    首先要弄明白一点,从根本上来讲 Git 是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面. 马上你就会学到这意味着什么. git objec ...

  3. HTML- 锚点实例

    <!DOCTYPE HTML> <html> <head> <meta charset='utf-8'> <title>锚点实例</t ...

  4. Linux安装Apache报错:Cannot find a valid baseurl for repo: base/7/x86_64解决方案

    最近使用CentOS7学习,安装安装Apache时候,使用yum安装Apache报错:本文适合CentOS7和RHEL7 # yum install httpd 出现:cannot find a va ...

  5. 整理eclipse,升级jdk环境小记录

    这2天在整理项目: 需要把eclipse 32位,jdk1.6 32位的更改为eclipse 64位,jdk1.8 64位版本的,于是我就在一台window7的电脑上直接操作,遇到了一下几点问题,记录 ...

  6. 监控工具 zxbbix

    报错 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server throug ...

  7. Shell脚本中判断输入变量或者参数是否为空的方法

    shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...

  8. POJ 2412 /// 空间几何 经纬度转三维坐标 角度转弧度 法向量

    题目大意: 给定半径6378km的球上的 多个地点 及其  经纬度 多个询问 给定三个地点 A B C A与B的等距点在球上形成一个大圆 即球面上有一个到两点距离相等的大圆 且大圆所在平面垂直两点连线 ...

  9. java并发编程之美-阅读记录10

    同步器 10.1CountDownLatch 在开发过程中经常会遇到在主线程中开启多个子线程去并行执行任务,并且主线程需要等待子线程执行完毕后在进行汇总.在CountDownLatch出现之前使用线程 ...

  10. 61.Merge k Sorted Lists(合并k个排序链表)

    Level:   Hard 题目描述: Merge k sorted linked lists and return it as one sorted list. Analyze and descri ...