运行 Rust 在单独的文件中进行测试
Running Rust tests inside a separate file
我绝对是 Rust 的菜鸟,Rust 书似乎没有涵盖我的单元测试的具体用例。
我正在努力为我的大学学位实施 The Computer Language Benchmarks Game。为了保持一致,我决定每种语言和算法的实现都应遵循以下目录结构:
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 编程语言学习和编写算法。我将算法创建为库文件,并有一个单独的文件调用库文件并执行其中的函数。这很好用。
我的问题在于测试。我希望有一个包含所有测试的单独文件,导入原始算法逻辑文件,并调用(和断言)函数。
为了更清楚地说明这一点,我将提供一个模拟示例来说明我是什么 运行ning:
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 基准游戏 project website 提供 makefile 脚本来构建不同的测试程序并对程序进行测量。
https://salsa.debian.org/benchmarksgame-team/benchmarksgame/-/tree/master/bencher
我绝对是 Rust 的菜鸟,Rust 书似乎没有涵盖我的单元测试的具体用例。
我正在努力为我的大学学位实施 The Computer Language Benchmarks Game。为了保持一致,我决定每种语言和算法的实现都应遵循以下目录结构:
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 编程语言学习和编写算法。我将算法创建为库文件,并有一个单独的文件调用库文件并执行其中的函数。这很好用。
我的问题在于测试。我希望有一个包含所有测试的单独文件,导入原始算法逻辑文件,并调用(和断言)函数。
为了更清楚地说明这一点,我将提供一个模拟示例来说明我是什么 运行ning:
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 基准游戏 project website 提供 makefile 脚本来构建不同的测试程序并对程序进行测量。
https://salsa.debian.org/benchmarksgame-team/benchmarksgame/-/tree/master/bencher