Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【每周一库】 laboratory - A simple, expressive unit test framework

【每周一库】 laboratory - A simple, expressive unit test framework

作者头像
MikeLoveRust
发布于 2021-01-06 06:58:18
发布于 2021-01-06 06:58:18
39400
代码可运行
举报
运行总次数:0
代码可运行

本期的每周一库带来的是rust下的轻量级单元测试框架laboratory

laboratory相关链接

  • laboratory github
  • laboratory carte.io

根据laboratory在github仓库页面的介绍,它包含了单元测试框架中常用的大部分工具,例如:before, before_each, after, after_each等。

并且还支持不同的报告方式,其中有spec,minimal,json以及json-pretty

接下来我们试用一下laboratory库

测试环境

  • Windows 10
  • cargo --version: cargo 1.46.0-nightly (089cbb80b 2020-06-15)
  • rustc --version: rustc 1.46.0-nightly (6bb3dbfc6 2020-06-22)

我们创建一个新的rust工程,在main.rs中写入两个简单的函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// main.rs
fn main() {
    add_number(1, 2);
    biger_than_10(20);
}

fn add_number (x: u64, y: u64) -> u64 { x + y }
fn biger_than_10(x: u64) -> bool { x > 10 }

#[cfg(test)]
mod tests {

    use super::*;
    use laboratory::{describe, it, expect};

    #[test]
    fn suite() {
        describe("add_number()").specs(vec![
            it("should return 3 when passed 1, 2", |_| {
                expect(add_number(1, 2)).to_equal(3)
            }),

            it("should return 20 when passed 0, 20", |_| {
                expect(add_number(0, 20)).to_equal(20)
            })

        ]).in_nanoseconds().run();

        describe("biger_than_10()").specs(vec![
            it("should return false when passed 10", |_| {
                expect(biger_than_10(10)).to_equal(false)
            }),

            it("should return trun when passed 100", |_| {
                expect(biger_than_10(100)).to_equal(true)
            })
        ]).in_nanoseconds().run();
    }
}

这里需要注意的是,从rust程序的角度我们只定义了一个test,但是我们可以在这个test中使用laboratory库实现多个step的测试,运行结果如下图

以上就是本期每周一库的内容,laboratory帮助我们养成随手写测试的好习惯:)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【每周一库】 todo_r - Find all your notes with one command!
根据github项目说明我们可以知道,Todo_r是一个简单的用来追踪代码中TODO的cli工具。它可以方便的统计代码中所有备注为TODO的内容,它的功能和leasot有很多相似之处,得益于rust的高性能,Todo_r运行速度要更快。
MikeLoveRust
2020/12/07
3220
【每周一库】 see - An HTTP server for hosting static files
see是一个静态文件的HTTP服务器,它的Github仓库介绍十分简单,包含的特性有
MikeLoveRust
2020/07/21
3960
【每周一库】 see - An HTTP server for hosting static files
【每周一库】configster - Rust library for parsing configuration files
当我们基于大型现成开发框架做开发的时候,配置文件的定义和格式早已被设置的妥妥当当,我们只需要在对应的文件中遵循格式做设置即可,例如dotnet开发中的App.config,定义好key和value,直接在程序中引用Configuration object就可以方便的读取配置信息。
MikeLoveRust
2021/01/20
3450
【每周一库】 Sincere - a micro web framework for Rust
Sincere库可以快速的搭建一个本地的web服务器,并且支持路由和中间件,操作起来非常像node搭建的web服务器,适合于快速测试和原型搭建。
MikeLoveRust
2020/10/23
5800
【每周一库】 Sincere - a micro web framework for Rust
【Rust每周一库】Rocket - 流行的网络开发框架
Rocket是一个基于Rust编写的上层网络框架,是目前rust主流的网络框架之一,有8.8k的star。而它的http部分就是基于之前提到的hyper。按官方说法,具有如下三个特点:1安全无误、开发体验好 2自动解决请求处理的类型问题,且无需全局状态 3各种可插拔的可选组件。那让我们来一起看一看吧~
MikeLoveRust
2020/02/20
2.7K0
【每周一库】 confy-table用于在cli中构建表格
增加了表格圆角显示和align-content属性的center, start, end配置,如下图:
MikeLoveRust
2020/11/06
8350
【每周一库】 confy-table用于在cli中构建表格
【Rust每周一库】 plotlib - 简单的数据可视化库
从库的名字不难看出,言简意赅,一定程度上借鉴了python下的matplotlib的命名。
MikeLoveRust
2020/02/12
1.5K0
【每周一库】 valora - rust下的图形绘制库
本期的每周一库带来的是valora,是一个rust下的图形绘制库。库的介绍和主页很有意思,尤其在项目主页,其中有一节的标题是成为一个艺术家
MikeLoveRust
2020/06/09
1.5K0
【每周一库】 rust-ftp - an FTP client written in Rust
rust-ftp的文档页面给出了使用的用例,从代码来看非常简单,下面我们通过实际使用来体验rust-ftp库。
MikeLoveRust
2020/08/11
1.6K0
【每周一库】 rust-ftp - an FTP client written in Rust
【每周一库】 simsearch - a simple and lightweight fuzzy search engine
本期的每周一库带来的是simsearch,一个运行在内存的轻量级字符串模糊搜索引擎。
MikeLoveRust
2020/09/23
3780
【每周一库】 simsearch - a simple and lightweight fuzzy search engine
一网打尽 Rust 语法
大家好,我是「柒八九」。一个「专注于前端开发技术/Rust及AI应用知识分享」的Coder
前端柒八九
2024/04/30
2180
一网打尽 Rust 语法
rust 入门笔记:环境安装、hello World、Cargo
github地址:https://github.com/yunwei37/os-summer-of-code-daily
云微
2023/02/24
7930
【Rust每周一知】Rust为什么会有String和&str?!长文预警!
本文是Amos博客文章“Working with strings in Rust”的翻译。
MikeLoveRust
2020/03/06
2.1K0
【Rust每周一知】Rust为什么会有String和&str?!长文预警!
【每周一库】 pbr - Terminal progress bar for Rust
本期的每周一库带来的是一个十分有趣的cli小工具,rust下的cli进度条库 - pbr
MikeLoveRust
2020/07/02
1.2K0
【每周一库】printpdf - Rust下的pdf文件生成库
根据printpdf文档的描述可以得知,printpdf是一个用来生成用于打印的pdf文件的rust库
MikeLoveRust
2020/04/14
1.5K0
【每周一库】printpdf - Rust下的pdf文件生成库
Rust语法入门
Rust 是一种系统级编程语言,它的设计目标是提供高性能、安全性和并发性。Rust 的主要优势包括:
码客说
2023/04/17
1.4K0
第2章 | Rust 导览
安装 Rust 的最佳方式是使用 rustup。请转到 rustup.rs 网站并按照那里的说明进行操作。
草帽lufei
2024/05/08
1950
第2章 | Rust 导览
【连载】两百行Rust代码解析绿色线程原理(四)一个绿色线程的实现
在我们开始之前,我得提醒你我们编写的代码非常不安全,并且这也不是编写 Rust 代码的 “最佳实践”。我希望在不引入很多不必要的复杂性的前提下使其尽可能安全,所以如果你发现了更安全方法,又不会让我们的代码过于复杂,那么我鼓励亲爱的你为该项目提一个 RP(Pull Request)。
MikeLoveRust
2020/02/12
7290
本体技术视点 | 想用Wasm开发dApp?你不得不读的入门教程(2)
Ontology Wasm 一直以来都受到了社区开发人员的广泛关注,而目前 Ontology Wasm 也即将上线本体主网。在上期的技术视点中,我们简要介绍了如何进行相关环境搭建和使用合约模板来进行开发。本期我们将开始初步尝试从零开始开发 Ontology Wasm 合约。
本体Ontology
2019/12/05
5270
本体技术视点 | 想用Wasm开发dApp?你不得不读的入门教程(2)
【每周一库】 img_hash,rust下的pHash算法库
关于pHash,一般翻译为感知哈希算法,算法通过DCT离散余弦来用固定大小矩阵(一般位8 X 8)把图像像素数据转换为频率数据,然后通过二值化计算得到图像的二进制数组,最后通过计算Hamming distance来得到两张图片的相似度数据。
MikeLoveRust
2020/09/07
7350
【每周一库】 img_hash,rust下的pHash算法库
推荐阅读
相关推荐
【每周一库】 todo_r - Find all your notes with one command!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验