前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每周一库】 laboratory - A simple, expressive unit test framework

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

作者头像
MikeLoveRust
发布2021-01-06 14:58:18
3630
发布2021-01-06 14:58:18
举报

本期的每周一库带来的是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
复制
// 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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档