【Rust自学】11.9. 单元测试
11.9 单元测试11.9.1. 测试的分类Rust把测试分为两类单元测试和集成测试。- 单元测试比较小也比较专注。每一个都单独测试一个模块还可以测试私有接口。- 集成测试完全位于代码库之外。它们使用你的代码的方式和其他外部代码一样。集成测试只能访问公共接口并且每个测试可能用到多个模块。11.9.2.#[cfg(test)]标注单元测试的目的是把一小段代码隔离出来从而快速判断它的行为是否符合预期。我们通常把单元测试和被测试的代码放在src下的同一个文件中。按照惯例每个源文件还应有一个test模块来存放这些函数并用#[cfg(test)]标注测试模块。带有这个标注的代码只有在执行cargo test时才会被编译和运行运行cargo build时不会编译。以上是单元测试的规则。集成测试位于不同的目录因此不需要#[cfg(test)]标注。#[cfg(test)]中的cfg是configuration配置的缩写。使用它相当于告诉Rust被标注的条目只有在指定的配置选项下才会被包含。看个例子pub fn add(left: usize, right: usize) - usize { left right } #[cfg(test)] mod tests { use super::*; #[test] fn it_works() { let result add(2, 2); assert_eq!(result, 4); } }#[cfg(test)]中的配置选项是test。这个配置选项由Rust提供用于编译和运行测试只有在执行cargo test时才会编译和运行#[cfg(test)]下的条目。11.9.3. 测试私有函数Rust允许测试私有函数其他语言不一定如此。看个例子pub fn add_two(a: usize) - usize { internal_adder(a, 2) } fn internal_adder(left: usize, right: usize) - usize { left right } #[cfg(test)] mod tests { use super::*; #[test] fn internal() { let result internal_adder(2, 2); assert_eq!(result, 4); } }即使internal_adder没有用pub声明为公共它仍然可以在测试模块中被调用。

相关新闻

【Rust自学】11.10. 集成测试

【Rust自学】11.10. 集成测试

11.10 集成测试 11.10.1. 什么是集成测试 在Rust里,集成测试完全位于被测试库的外部。集成测试调用库的方式和其他代码一样,这也意味着它们只能调用公共API。 集成测试的目的是验证库的多个部分能否正确地一起工作。 这一点有别于单元测试&#xff1b…

2026/10/19 22:07:20 阅读更多 →
FlexRay通信控制器中断寄存器配置与应用实战指南

FlexRay通信控制器中断寄存器配置与应用实战指南

1. 项目概述与中断机制的核心价值在嵌入式系统,尤其是汽车电子和工业控制领域,实时性和可靠性不是锦上添花,而是生死攸关的底线。想象一下,一辆高速行驶的汽车,其引擎控制单元(ECU)需要毫秒级响…

2026/10/18 10:40:02 阅读更多 →
V2G微电网多目标优化调度与改进灰狼算法研究

V2G微电网多目标优化调度与改进灰狼算法研究

1. 项目概述在新能源电力系统快速发展的背景下,微电网作为整合分布式能源的重要载体,其优化调度问题日益受到关注。本项目针对含风、光、荷、储的微电网系统,引入V2G(Vehicle-to-Grid)技术,提出了一种改进的…

2026/10/20 1:06:05 阅读更多 →

最新新闻

木门产品知识全解析:从分类、材质到测量安装避坑指南

木门产品知识全解析:从分类、材质到测量安装避坑指南

简介:这是一份面向木门行业从业者(销售、门店人员、安装技工)的产品知识培训资料,以单份doc文档收录,共1个文件,压缩包约3.28MB。内容从门的文化内涵、历史演变切入,系统梳理门按材质、开启方式…

2026/10/20 2:02:14 阅读更多 →
AGI时代开发者指南:大模型应用、RAG与Agent工程实践

AGI时代开发者指南:大模型应用、RAG与Agent工程实践

如果只看表面的技术动态,AGI时代给人的感觉是“模型又变强了”;但站在开发者角度,我更愿意把它理解为一次开发范式的变化:以前我们通过编写规则让软件工作,现在越来越多的工作变成了通过提示词、检索、工具调用和智能体…

2026/10/20 2:02:14 阅读更多 →
把AO接回来:黑线与白底之间差了多少空间关系

把AO接回来:黑线与白底之间差了多少空间关系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 2:02:14 阅读更多 →
ISO质量认证体系文件落地指南:从PDF到可执行框架与内审闭环

ISO质量认证体系文件落地指南:从PDF到可执行框架与内审闭环

简介:这份PDF资料围绕ISO质量认证体系展开,面向企业质量管理人员、体系推行专员及备考质量管理相关认证的学习者,帮助读者系统理解质量体系认证的起源、标准框架与落地要点。内容从1903年英国“BS”风筝标志讲起,梳理质量认证从产…

2026/10/20 2:02:14 阅读更多 →
OpenCV人脸识别实战:从环境配置到LBPH阈值调优

OpenCV人脸识别实战:从环境配置到LBPH阈值调优

简介:这份资源面向具备Python基础、希望入门机器视觉与人脸识别的开发者与学习者,以OpenCV为核心工具,围绕明星人脸检测与识别这一具体场景展开实战。压缩包共120个文件,以110张jpg与5张jpeg人脸样本图片为主体,另含2个…

2026/10/20 2:02:14 阅读更多 →
EfficientNetV2架构深度解析:tf_efficientnetv2_b3.in1k为何能又快又小?

EfficientNetV2架构深度解析:tf_efficientnetv2_b3.in1k为何能又快又小?

【免费下载链接】tf_efficientnetv2_b3.in1k 项目地址: https://ai.gitcode.com/hf_mirrors/timm/tf_efficientnetv2_b3.in1k 点击查看 免费下载 本文以开源预训练模型 tf_efficientnetv2_b3.in1k 为例,带你快速看懂这个图像分类模型:它仅用…

2026/10/20 2:01:14 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →