溫馨提示×

Rust在Linux上的單元測試如何編寫

小樊
53
2025-08-01 06:38:59
欄目: 編程語言

在Rust中,單元測試是通過在代碼中編寫#[test]屬性的函數來實現的。這些測試函數通常放在與它們所測試的模塊相同的文件中,文件名以_test.rs結尾。Rust的測試框架是內置的,不需要額外的依賴。

以下是一個簡單的Rust單元測試示例:

  1. 首先,創建一個新的Rust庫項目(如果你還沒有一個):
cargo new my_project --lib
cd my_project
  1. src/lib.rs文件中,編寫一個簡單的函數和一個測試函數:
// src/lib.rs

pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_add() {
        assert_eq!(add(1, 2), 3);
        assert_eq!(add(-1, 1), 0);
        assert_eq!(add(0, 0), 0);
    }
}

在這個例子中,我們定義了一個add函數,它接受兩個i32整數并返回它們的和。然后,我們創建了一個名為tests的模塊,并使用#[cfg(test)]屬性標記它。這意味著這個模塊只會在運行測試時編譯。

tests模塊中,我們編寫了一個名為test_add的測試函數,它使用assert_eq!宏來檢查add函數的輸出是否與預期相符。

  1. 運行測試:

在項目根目錄下,運行以下命令來執行測試:

cargo test

這將編譯你的項目并運行所有標記為#[test]的測試函數。如果所有測試都通過,你將看到類似以下的輸出:

running 1 test
test tests::test_add ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

如果有測試失敗,cargo test將顯示失敗的詳細信息,幫助你診斷問題。

Rust還提供了許多其他有用的宏和特性,例如#[should_panic](用于測試恐慌情況)和#[bench](用于基準測試)。更多關于Rust測試的信息,請參閱Rust官方文檔。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女