11 个版本 (6 个重大变更)
0.7.3 | 2024年6月6日 |
---|---|
0.7.1 | 2024年4月12日 |
0.6.0 | 2024年3月27日 |
0.2.0 | 2023年11月10日 |
#259 in 测试
645KB
3K SLoC
Monkey Test
类似于 属性测试 (PBT) 工具 QuickCheck、ScalaCheck 和 类似库,适用于 Rust 编程语言。
☝️ 注意!此库正在积极开发中。部分功能缺失,API 可能会发生变化。有关最近更改的详细信息,请参阅 更改日志。
示例
#[cfg(test)]
mod tests {
use monkey_test::*;
#[test]
#[should_panic(expected = "Property failed!\nFailure: 15")]
fn test_that_will_fail() {
monkey_test()
.with_generator(gen::u8::any())
.assert_true(|x| x < 15);
}
}
入门
在 Cargo.toml
中添加
[dev-dependencies]
monkey_test = "0"
然后尝试一些小示例,如上面所示。
文档和教程
Monkey Test 文档 (也可在 docs.rs 上找到) 展示了如何使用此库,并试图成为使用 Monkey Test 和一般属性测试的完整教程。更多使用示例可以在源文件 tests/basic_usage.rs 和其他 测试文件夹 中的文件中找到。
当前状态和缺失部分
目前,在 0.x.y 版本中,该库正在积极开发中。它目前缺少一些部分,主要是用于以下内容的内置生成器和 shrinkers:
- 字符串。
- 除了
Vec
之外的一些常用数据结构。 - 递归数据结构。
其他已知限制
- 目前,浮点数生成器并没有限制自身缩小到给定生成器范围内的值,但默认会缩小到零。例如,假设我们创建了一个生成器
monkey_test::gen::f64::ranged(10.0..100.0)
,相关的缩小器不仅会尝试给定范围内的候选值10.0..100.0
,还可以尝试其他值,如 -10.0,最终会尝试缩小到零。
有关最近更改的详细信息,请参阅 CHANGELOG。
其他库
Rust 中有其他基于属性的测试的替代方案。Monkey Test 库主要出于主观原因存在,不喜欢其他库的 API 体验或宏和属性的过度使用。您的体验可能会有所不同。
最成熟和广泛采用的替代方案是 Quickcheck 和 Proptest。目前,如果您想有一个生产级别的 PBT 库,请选择这两个中的任何一个。如果有疑问,请选择 Proptest,因为它允许自定义生成器和缩小器。
其他一些替代方案包括 checkito 和 diceprop。
许可证
Monkey test 使用 MIT 许可证。
贡献
这个库需要用户的反馈来变得更好。请随意 打开一个问题 或 打开一个拉取请求。
Monkey Test 中的所有工作都按照 MIT 许可证的条款许可。通过提交贡献,您同意按照这些条款许可您的工作。
依赖关系
~1.3–2MB
~38K SLoC