位置:首页 > Rust > 如何在 Debian 上为 Rust 项目编写单元测试

如何在 Debian 上为 Rust 项目编写单元测试

时间:2026-08-25  |  作者:冻月看渠  |  阅读:0

目录

  1. 先把 Debian 上的 Rust 工具链准备好
  2. 没有现成工程时,先用 Cargo 建一个项目
  3. 单元测试应该写在哪里,最基本的写法是什么
  4. 如何运行测试,以及终端输出代表什么
  5. 测试失败后怎么排查,以及为什么要接入 CI

前言

很多刚接触 Rust 的开发者会把“写单元测试”想得很复杂,尤其是在 Debian 这类常见开发环境里,总担心工具链、项目结构和测试入口不够清晰。其实这件事可以拆成几步固定动作:先把 Rust 装好,再用 Cargo 建立项目,然后把测试写进合适的位置,最后通过命令执行和排查结果;照着这条线走,你就能判断自己的测试是否真正跑起来了。

很多刚接触 Rust 的开发者会把“写单元测试”想得很复杂,尤其是在 Debian 这类常见开发环境里,总担心工具链、项目结构和测试入口不够清晰。其实这件事可以拆成几步固定动作:先把 Rust 装好,再用 Cargo 建立项目,然后把测试写进合适的位置,最后通过命令执行和排查结果;照着这条线走,你就能判断自己的测试是否真正跑起来了。

先把 Debian 上的 Rust 工具链准备好

在 Debian 上为 Rust 项目写测试,前提是先把 Rust 工具链装完整。最常见的安装方式是直接使用 rustup

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

这条命令会安装 Rust 及其工具链管理器。安装完成后,系统通常会自动把相关路径加入 PATH,这样后续就能直接使用 cargorustc 等命令。如果你后面执行命令时找不到 Rust 工具,优先检查的就是这一步是否已经生效。

没有现成工程时,先用 Cargo 建一个项目

如果你手里还没有 Rust 项目,最快的起点就是用 cargo 创建一个新工程:

cargo new my_project
cd my_project

cargo 既是 Rust 的包管理器,也是构建系统。执行完以后,项目目录、基础源码和配置文件都会自动生成,你不需要手动搭结构。对刚开始练习单元测试的人来说,这种标准工程最省事,也最方便直接运行测试命令。

单元测试应该写在哪里,最基本的写法是什么

Rust 项目的业务代码通常写在 src/lib.rssrc/main.rs 中。测试代码既可以放在同一个文件末尾,也可以放进单独的 tests 目录里。入门阶段最常见的方式,是在源文件内使用 #[cfg(test)] 包住测试模块,让这部分代码只在测试模式下参与编译。

展示 Debian 环境中 Rust 单元测试的编写结构,包括源码文件、测试模块、属性标记与断言关系。
Rust 单元测试的基本结构把测试写进源文件时,重点是测试模块的包裹方式和断言结构。

下面是一个最基础的例子,在 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(2, 2), 4);
    }
}

这里有几个关键点值得直接记住:

  • #[cfg(test)] 表示只有在测试模式下才编译这个模块。
  • #[test] 用来声明这是一个测试用例。
  • assert_eq! 用于校验“实际结果”和“期望结果”是否一致。

如果你的目标只是先把 Debian 上的 Rust 单元测试跑通,这个结构已经够用了。等后续项目复杂起来,再考虑把不同测试拆到更细的文件和目录中。

如何运行测试,以及终端输出代表什么

测试写好后,直接在项目根目录执行下面的命令即可:

展示 cargo test 的执行路径、结果类型和排错入口,帮助读者理解测试运行后的终端反馈。
cargo test 的执行与反馈从执行命令到查看通过、失败和调试线索,测试输出可以直接服务排错。
cargo test

这个命令会自动完成编译,并运行所有带有 #[test] 标记的测试函数。对于大多数小型项目来说,它就是最核心、也最常用的测试入口。

cargo test 的输出通常比较直观:通过的测试会显示成功状态,失败的测试则会给出更具体的信息,包括哪个断言失败了、期望值和实际值分别是什么,有时还会附带失败位置的上下文。这些信息足够帮助你快速判断问题出在函数逻辑、参数处理,还是测试预期本身写错了。

测试失败后怎么排查,以及为什么要接入 CI

当测试没有通过时,最直接的排查办法是在测试函数里加入 println! 输出中间变量,或者使用 dbg! 宏快速查看表达式结果。对于刚开始接触 Rust 测试的人来说,这种方式比一上来接调试器更直接,也更容易缩小问题范围。

如果你使用的是带调试能力的 IDE,也可以结合 IDE 的断点功能进一步查看执行路径。但无论采用哪种方式,目标都一样:先确认函数结果为什么和断言预期不一致,再决定是改代码还是改测试。

另外,手动执行测试只适合个人练习或很小的项目。只要项目开始多人协作,最好尽早把测试放进持续集成流程。常见选择包括 GitHub Actions、GitLab CI/CD 和 Travis CI,这些平台对 Rust 项目都有较成熟的支持。配置完成后,每次提交或推送代码都能自动运行测试,比依赖人工记得执行 cargo test 更稳妥。

从实际使用角度看,在 Debian 上为 Rust 项目编写单元测试并没有额外门槛,关键只是把流程固定下来:工具链可用、项目结构标准、测试入口清晰、失败时能快速定位。把这几件事做顺,后面无论是写库还是写应用,测试都会成为日常开发的一部分。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多