【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/7/23 18:54:43 阅读更多 →
FlexRay通信控制器中断寄存器配置与应用实战指南

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

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

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

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

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

2026/7/23 18:53:42 阅读更多 →

最新新闻

Windows安装Ubuntu20.04系统(双系统)

Windows安装Ubuntu20.04系统(双系统)

安装准备:一个空白U盘(≥4G),电脑足够的空闲硬盘空间(用来安装Ubuntu系统) 1.Ubuntu镜像文件 历史版本选择“其他下载”——“查看历史版本”——“找到所需版本(个人下载选择桌面映像&#x…

2026/7/23 19:07:48 阅读更多 →
计算机Django毕设实战-基于 Django 的校园常态化防疫信息管理系统 大学生健康信息登记与疫情防控系统设计【完整源码+LW+部署说明+演示视频,全bao一条龙等】

计算机Django毕设实战-基于 Django 的校园常态化防疫信息管理系统 大学生健康信息登记与疫情防控系统设计【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 19:07:48 阅读更多 →
TI TM4C129XNCZAD微控制器深度解析:架构、外设与实战应用

TI TM4C129XNCZAD微控制器深度解析:架构、外设与实战应用

1. 项目概述与核心价值 如果你正在寻找一颗能扛起工业物联网网关、高端人机交互界面或者复杂运动控制任务的“大心脏”微控制器,那么TI的Tiva™ TM4C129XNCZAD绝对是一个绕不开的选项。这颗芯片在业内有个更广为人知的名字——基于ARM Cortex-M4F内核的“连接型”M…

2026/7/23 19:07:48 阅读更多 →
传统运维的“救火”时代结束了:用AI重新定义企业级智能运维

传统运维的“救火”时代结束了:用AI重新定义企业级智能运维

在数字化转型进入深水区的今天,企业业务对IT系统的依赖达到了前所未有的高度。然而,随之而来的是指数级增长的系统复杂度:微服务架构、容器化部署、多云环境交织,让底层架构变得错综复杂。 对于绝大多数企业的运维团队而言&#…

2026/7/23 19:07:48 阅读更多 →
TMS320C28x在线栈溢出检测:硬件监视点与RTOSINT实战

TMS320C28x在线栈溢出检测:硬件监视点与RTOSINT实战

1. 项目概述与核心价值在嵌入式DSP开发领域,尤其是基于TI TMS320C28x系列处理器的项目中,栈溢出是一个让所有工程师都头疼的“定时炸弹”。它不像逻辑错误那样容易复现和定位,往往在特定工况、特定数据流下才会被触发,一旦发生&am…

2026/7/23 19:06:48 阅读更多 →
使用nginx实现正向代理功能

使用nginx实现正向代理功能

正向代理是一个位于客户端(client)和服务端(server)之间的服务器,客户端需要访问服务端的内容,先向代理发送一个请求并指定访问目标(服务端),然后代理端向服务端转交请求并将获得的内容返回给客户端。 使用nginx配置正…

2026/7/23 19:06:48 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻