كيفية إنشاء اختبارات معلمية في 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 للاختبارات المعلمية؟ أم أحتاج إلى