如何在Rust中创建参数化测试以验证多个输入数据?
大家好!我最近开始学习Rust,正在为我的项目编写测试。我有一个计算数字阶乘的函数:
```rust
fn factorial(n: u64) -> u64 {
match n {
0 | 1 => 1,
_ => n * factorial(n - 1),
}
}
```
我需要针对不同的输入值(如0、1、5、10等)验证其正确性。目前我为每个情况单独编写测试:
```rust
#[test]
fn test_factorial_0() {
assert_eq!(factorial(0), 1);
}
#[test]
fn test_factorial_1() {
assert_eq!(factorial(1), 1);
}
#[test]
fn test_factorial_5() {
assert_eq!(factorial(5), 120);
}
```
当需要验证数十或数百种情况时,这非常不方便。在其他语言(例如Python中使用`pytest.mark.parametrize`)中,我习惯编写一个参数化测试,它接受输入数据和预期结果的列表。在Rust文档中,我只找到了使用`#[test]`的简单示例。
请问Rust是否有内置的方法来实现参数化测试?