簡體   English   中英

在單獨的文件中運行 Rust 測試

[英]Running Rust tests inside a separate file

我是 Rust 的絕對菜鳥,而 Rust 書似乎沒有涵蓋我的單元測試特定用例。

我正在為我的大學學位實施計算機語言基准游戲 為了保持一致,我決定每種語言和算法的實現都應該遵守以下目錄結構:

root
|
|__ language_1
|   |
|   |__ algorithm_1
|   |   |
|   |   |__ algorithm_1          <-- The algorithm logic.
|   |   |
|   |   |__ algorithm_1_tests    <-- Tests.
|   |   |
|   |   |__ algorithm_1_run      <-- A `main` function to execute the algorithm logic.
|   |
|   |__ algorithm_2
|
|__ language_2
...

我需要這種一致性,因為我稍后會編寫一個 bash 腳本來遍歷這個目錄樹結構,並且能夠輕松編譯(如果需要)和運行必要的文件。

我目前正在學習和編寫 Rust 編程語言的算法。 我將算法創建為庫文件,並有一個單獨的文件調用庫文件並在內部執行 function。 這工作正常。

我的問題在於測試。 我希望有一個包含所有測試的單獨文件,導入原始算法邏輯文件,並調用(和斷言)函數。

為了使這一點更清楚,我將提供一個我正在運行的模擬示例:

root
|
|__ rust
|   |
|   |__ algorithm
|   |   |
|   |   |__ algorithm.rs
|   |   |
|   |   |__ algorithm_tests.rs
|   |   |
|   |   |__ algorithm_run.rs

algorithm.rs

fn is_even(a: u32) -> bool {
    return a % 2 == 0;
}

algorithm_run.rs

mod algorithm;

fn main() {
    let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    for number in numbers {
        algorithm::is_even(number);
    }

algorithm_tests.rs

mod algorithm;

#[test]
fn test_is_even_returns_true_for_even_numbers() {
    let even_numbers = [2, 4, 6, 8, 10]
    for number in even_numbers {
        assert_eq!(true, algorithm::is_even(number));
    }
}

這是使用以下命令執行和運行的$ rustc algorithm_run.rs -o algorithm &&./algorithm

我需要進行哪些命令或修改才能運行測試?

您可以通過--test與測試工具一起編譯:

$ rustc --test algorithm_tests.rs && ./algorithm_tests

running 1 test
test test_is_even_returns_true_for_even_numbers ... ok

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

fwiw基准游戲項目網站提供 makefile 腳本來構建不同的測試程序並對程序進行測量。

https://salsa.debian.org/benchmarksgame-team/benchmarksgame/-/tree/master/bencher

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM