Rust Course学习(编写测试)

news/2024/6/16 11:51:56

如果友友你的计算机上没有安装Rust,可以直接安装:Rust 程序设计语言 (rust-lang.org)icon-default.png?t=N7T8https://www.rust-lang.org/zh-CN/

Introduce 介绍

       Testing in Rust involves writing code specifically designed to verify that other code works as expected. It’s important because it helps ensure the reliability, correctness, and robustness of Rustprograms by detecting bugs, regressions, and edge cases early in the development process.
      Rust中的测试涉及编写专门设计的代码,以验证其他代码是否按预期工作。它很重要,因为它有助于通过在开发过程的早期检测错误,回归和边缘情况来确保Rust程序的可靠性,正确性和健壮性。

     To start experimenting with tests, we need to create a library crate, we can do that by running the following command.
     要开始测试,我们需要创建一个库crate,我们可以通过运行以下命令来完成。

cargo new testing_in_rust --libv

       Creating a new library crate 
       创建一个新的库crate,可以参考小北之前的main.rs 文件。

      In the lib.rs file we already have a pre-written test, let’s break it down to understand it better.
      在 lib.rs 文件中,我们已经有了一个预先编写的测试,让我们分解它以更好地理解它。

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);}
}
  • The #[cfg(test)] attribute indicates that the module contains test code, which will only be compiled when running tests.
  • #[cfg(test)] 属性表示模块包含测试代码,只有在运行测试时才会编译这些代码。
  • mod tests { ... } defines a module named tests specifically for organizing test code.
  • mod tests { ... } 定义了一个名为 tests 的模块,专门用于组织测试代码。
  • use super::*; imports items from the parent module (super) into the test module's scope, allowing access to the add function.
  • use super::*; 将项目从父模块( super )导入到测试模块的作用域中,允许访问 add 函数。
  • #[test] attribute marks a function as a test case. In this case, fn it_works() { ... } is the test case.
  • #[test] 属性将函数标记为测试用例。在本例中, fn it_works() { ... } 是测试用例。
  • Inside it_works(), let result = add(2, 2); calls the add function with arguments 2 and 2, storing the result in result.
  • 在 it_works() 中, let result = add(2, 2); 使用参数 2 和 2 调用 add 函数,并将结果存储在 result 中。
  • assert_eq!(result, 4); verifies that result is equal to 4. If the assertion fails, the test case fails, indicating that the add function did not produce the expected result.
  • assert_eq!(result, 4); 验证 result 等于 4 。如果断言失败,则测试用例失败,表明 add 函数没有产生预期的结果。
  • Running this test will verify that the add function correctly adds two usize values and returns the expected result, 4.
  • 运行此测试将验证 add 函数是否正确地将两个 usize 值相加并返回预期结果 4
  • To run the tests we can use the cargo test command
  • 要运行测试,我们可以使用 cargo test 命令
    cargo test 


http://www.mrgr.cn/p/00243048

相关文章

WPF 整体结构基础

前言:最初参加工作时,做过WPF项目 ,后面几年后者虽然有写WPF项目,但多数都是边边角角,写一点满足工作需要。现在写下WPF,主要就是玩一玩,尝试下不同的东西。这是我的代码仓库:地址 (如果对您有帮助,给颗小星星奖励下吧),在WPF/Lesson 10 Practice/Practice/下面。基…

使用Django中的Session和Cookie来传递数据

在Django中,Session和Cookie是两种常用的机制,用于在服务器端和客户端之间传递数据。下面我将简要介绍如何在Django中使用Session和Cookie来传递数据。 1、问题背景 在 Django 中,可以使用 request.POST 来获取表单提交的数据。但是&#xf…

最新ChatGPT中文系统网站源码+系统部署+支持AI对话、AI绘画、AI音乐等大模型

一、系统介绍 本文将介绍最新的ChatGPT中文版AI创作系统——星河易创AI系统,该系统基于ChatGPT的核心技术,融合了自然语言问答、绘画、音乐等创作功能,并兼容官方GPT全模型。该系统提供多样化的应用,包括GPTs的多场景应用、实时G…

布局全球内容生态,酷开科技Coolita AIOS以硬核品质亮相

当前,全球产业链供应链格局持续重构,成为影响中国对外经济发展的重要因素。2024年4月15至5月5日,历史久、规模大、层次高,作为中国外贸风向标的第135届中国进出口商品交易会(即广交会)在美丽的广州隆重举行…

CLI举例:通过URL分类控制用户访问的网站

华为CLI举例:通过URL分类控制用户访问的网站 配置基于URL分类的URL过滤功能,可以实现对用户访问的某一类网站的控制。既可以是FW自带的预定义分类,也可以是管理员配置的自定义分类。 组网需求 如图1所示,FW作为企业网关部署在网络…

Spring如何解决循环依赖问题?

当然是用三级缓存来解决循环依赖问题。 那二级缓存能解决吗? 首先我们要知道Spring bean的生命周期 1.实例化(new) 2.属性赋值(populate) 3.初始化 一堆钩子函数(动态代理的生成也在这一步&#xff09…

【机器学习】卷积神经(CNN)在图像识别中的革命性应用:自动驾驶的崛起

卷积神经网络(CNN)在图像识别中的革命性应用:自动驾驶的崛起 一、卷积神经网络(CNN)的基本原理二、CNN在图像识别中的显著成果三、CNN在自动驾驶汽车中的物体检测和识别四、CNN在图像识别中的代码实例 随着人工智能和深…

一、RocketMQ基本概述与部署

RocketMQ基本概述与安装 一、概述1.MQ概述1.1 用途1.2 常见MQ产品1.3 MQ常用的协议 2.RocketMQ概述2.1 发展历程 二、相关概念1.基本概念1.1 消息(Message)1.2 主题(Topic)1.3 标签(Tag)1.4 队列&#xff0…

鸿蒙内核源码分析(文件句柄篇) | 你为什么叫句柄

句柄 | handle int open(const char* pathname,int flags); ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count); int close(int fd);只要写过应用程序代码操作过文件不会陌生这几个函数,文件操作的几个关键步骤嘛,跟把大…

智能工作流:Spring AI高效批量化提示访问方案

集用SpringAI搭建系统,依靠线程池\负载均衡等技术进行请求优化,用于解决科研&开发过程中对GPT接口进行批量化接口请求中出现的问题。大语言模型接口以OpenAI的GPT 3.5为例,JDK版本为17。基于SpringAI搭建系统,依靠线程池\负载均衡等技术进行请求优化,用于解决科研&…

【小白可懂】SpringBootWeb入门

web开发需要的技术栈: 前端web开发: html css javascript Vue Element Nginx 后端web开发: Maven SpringBoot Web 基础篇 MySOL SpringBoot Mybatis SpringBoot Web开发篇 SpringBoot web进阶篇 什么是spring? 官网&a…

修改el-checkbox样式

一定要在最外层; //未选中框/deep/ .el-checkbox__inner{border-color: #0862a3;}//选中框/deep/ .el-checkbox__input.is-checked .el-checkbox__inner{background-color: #0862a3;border-color: #0862a3;}//未选中框时右侧文字/deep/ .el-checkbox__label{}//选中…

NLP 词嵌入向量即word embedding原理详解

文章目录 1. 前言2. 目标3. CBOW4. 训练结果5. 如何使用6. 延伸7. 参考 1. 前言 现在 NLP 相关的技术大概率会接触到词向量、word embedding(词嵌入)诸如此类的术语。然后网上一搜,哦,有一个 Word2Vec 的技术,能够把单…

测斜仪的具体应用:从地下工程到斜坡监测

测斜仪作为一种精密的测量工具,在多个领域都有广泛的应用。从最初的地下工程,到现今的斜坡监测,测斜仪的技术进步和应用范围的扩大,为工程安全提供了有力的保障。 一、地下工程中的测斜仪应用 在地下工程中,测斜仪主要…

微信登录功能--网站应用

微信开发平台注册https://open.weixin.qq.com/ 账号中心-填写基本资料(最好是公司注册) 账号中心-开发者资质认证(充钱,300) 审核通过之后,管理中心-网站应用-创建网站应用(AppSecret一定一定…

JDK1.8 安装并配置环境变量

一、Windows 配置 1 安装文件 jdk-8u401-windows-i586.exe 2 环境变量 JAVA_HOME C:\Program Files (x86)\Java\jdk-1.8 CLASSPATH .;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar; Path %JAVA_HOME%\bin 说明:Win7/Win8 中 Path 可能需要写成 ;%JAVA_HO…

git bash各分支修改内容不同但合并后不显示冲突问题

在跟着廖雪峰老师的git学习时,按部就班的执行明后,发现 而不是出现原文的结果 解决方法: 切换位feature分支,再合并 git switch feature1 git merge master 此时我们发现: 后面再跟着原文敲就可以了

Kafka效率篇-提升效率三板斧

kafka在效率上做了很多的努力。最初的一个使用场景是处理网页上活跃的数据,它往往有非常大的体量,每个页面都能产生数十条写入。而且我们假设每条消息都会被至少一个消费者消费(通常是多个),因此,我们努力让…

Windows 下 PyTorch 入门深度学习环境安装(CPU版本)

Windows 下 PyTorch 入门深度学习环境安装(CPU版本) 一、安装Anaconda 二、虚拟环境配置 2.1 基础命令 列出虚拟环境 conda env list创建虚拟环境 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main conda create -n 虚拟环境名字 python=版本 -c镜像地址激活环境 co…

PyTorch深度学习快速入门教程

PyTorch深度学习快速入门教程 一、基础知识 1.1 Python学习中的两大法宝1.2 pycharm以及jupyter使用及对比将环境写入Notebook的kernel中: python -m ipykernel install --user --name 环境名称 --display-name "Python (环境名称)" 打开Jupyter notebook,新建Pyth…