测试运行顺序:单元测试(同处于源文件中,以 #[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. select的限制与poll的使用

    select的限制 select的并发数受到两个限制:1.一个进程能打开的最大描述符数量;2.select中fd_set集合容量的限制(FD_SETSIZE) 关于进程的最大描述符数量: ulimit ...

  2. java多线程学习笔记(八)

    本节开始线程间通信: 使用wait/notify实现线程间通信 生产者/消费者模式的实现 方法join的使用 ThreadLocal类的使用 可以通过使用 sleep() 结合 while(true) ...

  3. SQL分支语句与循环语句

    分支语句 if then elsif then else end if 举例: set serveroutput on declare num number; begin num:; then dbm ...

  4. C++中的类与封装

    1,类的组合: 1,类不是孤立存在的,类之间都会有一些关系,组合就是类的基本关系之一: 2,电脑一般而言是由 CPU.内存.主板.键盘和硬盘等部件组合而成: 3,学习电脑组装需要多少时间?学习电脑组装 ...

  5. Ptyhon变量,常量,注释

    变量的命名规则: 1.变量由字母,数字,下划线搭配而成 2.变量不能以数字开头 3.变量也不能是Python的关键字. 4.变量不要有中文 5.名字要有意义 6.名字不要太长 变量的两种命名方式: 1 ...

  6. Skimap_ros 利用RGBD创建Octomap(一)

    1. 奥比中光astra RGBD相机安装 1.1 安装依赖 $ sudo apt-get install build-essential freeglut3 freeglut3-dev 1.2 检查 ...

  7. Linux学习笔记0-CentOS7关闭防火墙

    关闭防火墙 systemctl stop firewalld.service //停止firewall systemctl disable firewalld.service //禁止firewall ...

  8. linux用户的基本操作2 用户密码管理

    目录 linux系统的基本用户操作2 用户的扩展知识 用户密码管理 linux系统的基本用户操作2 3)使用userdel删除账户 语法 : userdel [-r] username -r 同时删除 ...

  9. Codeforces 1183H DP 计算子序列数目

    题意及思路:https://blog.csdn.net/mmk27_word/article/details/93999633 第一次见这种DP,有点像退背包的思想,如果发现有可能因为字母相同和前面算 ...

  10. Vue学习笔记【33】——nrm的安装使用

    作用:提供了一些最常用的NPM包镜像地址,能够让我们快速的切换安装包时候的服务器地址: 什么是镜像:原来包刚一开始是只存在于国外的NPM服务器,但是由于网络原因,经常访问不到,这时候,我们可以在国内, ...