2个版本
0.1.1 | 2023年2月28日 |
---|---|
0.1.0 | 2022年8月19日 |
#497 在 调试
每月522次下载
用于 8 crates
8KB
65 行
测试的可重复随机数生成器
具有可重复测试有助于调试具有概率性质的问题。此库提供了一个与 rand
Crate 兼容的随机数生成器 DevRng
(它实现了 Rng
、RngCore
、SeedableRng
特性)。当构造生成器时,其种子将打印到stdout。您可以通过设置 RUST_TESTS_SEED
环境变量来覆盖种子。相同的种子导致跨所有平台生成相同的随机性。
用法
可重复的随机数源可以在一行中添加
use rand::Rng;
use rand_dev::DevRng;
#[test]
fn it_works() {
let mut rng = DevRng::new();
assert!(rng.gen_range(0..=10) < 10);
}
然后如果测试失败,您可以在stdout中观察到随机数生成器的种子
$ cargo test
Finished test [unoptimized + debuginfo] target(s) in 0.00s
Running unittests (target/debug/deps/simple_usage-592d47155d40d1f7)
running 1 test
test tests::it_works ... FAILED
failures:
---- tests::it_works stdout ----
RUST_TESTS_SEED=cab4ab5c8471fa03691bb86d96c2febeb9b1099a78d164e8addbe7f83d107c78
thread 'tests::it_works' panicked at 'assertion failed: rng.gen_range(0..=10) < 10', src/lib.rs:9:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
tests::it_works
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
现在您可以通过设置环境变量来修复种子以重现和调试失败的测试
$ export RUST_TESTS_SEED=cab4ab5c8471fa03691bb86d96c2febeb9b1099a78d164e8addbe7f83d107c78
$ cargo test
许可协议
根据您的选择,许可协议为以下之一
- Apache许可证,版本2.0
- MIT许可证
。
贡献
除非您明确表示,否则您有意提交的任何贡献,根据Apache-2.0许可证的定义,应按上述方式双许可,不附加任何额外条款或条件。
依赖项
~235–420KB