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

网友投稿 684 2022-11-22

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

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

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

laboratory相关链接

laboratory githublaboratory 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​​中写入两个简单的函数

// main.rsfn 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帮助我们养成随手写测试的好习惯:)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:1. 指针有什么用?
下一篇:【Rust日报】2022-02-15 cargo-nextest:全新版本的 test runner
相关文章

 发表评论

暂时没有评论,来抢沙发吧~