首页 > 解决方案 > Rust 测试甚至无法运行

问题描述

我正在编写一个项目来学习如何使用 Rust,我将我的项目称为future-finance-labs。在编写了一些基本功能并验证可以构建应用程序之后,我想包括一些测试,位于aggregates/mod.rs. [根据文档,测试与实际代码位于同一文件中。] 尽管尽我所能遵循文档,但我无法运行测试。我尝试使用 PowerShell 和 Bash 构建项目。[它也无法在 Fedora Linux 上运行]

这是我在 Bash 上的输出:

~/future-finance-labs$ cargo test -- src/formatters/mod.rs
    Finished test [unoptimized + debuginfo] target(s) in 5.98s
     Running target/debug/deps/future_finance_labs-16ed066e1ea3b9a1

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

使用 PowerShell 我得到相同的输出,但出现如下错误:

error: failed to remove C:\Users\jhale\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\jhale\future-finance-labs\target\debug\build\mime_guess-890328c8763afc22\build_script_build-890328c8763afc22.build_script_build.c22di3i8-cgu.0.rcgu.o: The system cannot find the path specified. (os error 3)

在对编写一些第一次尝试通过的测试的前景感到兴奋之后,我很快意识到所有的绿色都是指示性的。相反,甚至无法运行测试。我只想运行单元测试。cargo test在没有单独的文件的情况下单独运行也会失败。为什么我不能用我当前的设置在这个项目中运行任何测试?

标签: unit-testingrustrust-cargo

解决方案


它找不到您的测试,因为 rust 编译器不知道它。您需要添加mod aggregates到主目录。

mod aggregates;

fn main() {
    println!("Hello, world!");
}

完成此操作后,您会发现aggregates/mod.rs由于多种原因无法编译。


正如 Mihir 试图说的,您需要使用test的名称,而不是文件的名称来运行特定的测试:

cargo test min_works
cargo test aggregates

也可以看看:


推荐阅读