Rust Course学习(编写测试)

如果友友你的计算机上没有安装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.mzph.cn/web/7711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.5.7

槽函数声明 private slots:void on_ed_textChanged();void on_pushButton_clicked(); }; 槽函数定义 void Widget::on_ed_textChanged()//文本框 {if(ui->ed1->text().length()>5&&ui->ed2->text().length()>5){ui->pushButton->setStyleSh…

Xinstall广告效果监测,助力广告主优化投放策略

在移动互联网时代,APP推广已成为企业营销的重要手段。然而,如何衡量推广效果,了解用户来源,优化投放策略,一直是广告主和开发者面临的难题。这时,Xinstall作为国内专业的App全渠道统计服务商,以…

实名认证的接口方式、PHP身份证实名认证接口集成

身份证实名认证接口用于验证用户提交身份信息的真实性和有效性,开发者可以下载开发者示例快速的将身份证实名认证接口功能集成到自己的应用中,以此来保障用户的身份信息不被泄露和滥用。 翔云身份证实名认证接口可以通过身份证号、姓名、证件人像、现场…

Docker 安装部署 postgres

Docker 安装部署 postgres 1、拉取 postgres 镜像文件 [rootiZbp19a67kznq0h0rgosuxZ ~]# docker pull postgres:latest latest: Pulling from library/postgres b0a0cf830b12: Pull complete dda3d8fbd5ed: Pull complete 283a477db7bb: Pull complete 91d2729fa4d5: Pul…

RT-DETR-20240507周更说明|更新Inner-IoU、Focal-IoU、Focaler-IoU等数十种IoU计算方式

RT-DETR改进专栏|包含主干、模块、注意力、损失函数等改进 专栏介绍 本专栏包含模块、卷积、检测头、损失等深度学习前沿改进,目前已有改进点70!每周更新。 20240507更新说明: ⭐⭐ 更新CIoU、DIoU、MDPIoU、GIoU、EIoU、SIoU、ShapeIou、PowerfulIoU、…

数据结构-自定义栈、队列、二分查找树、双向链表

/*** 底层是数组*/ public class MyStack {private long [] arr; // 底层是数组private int top -1; // 核心【栈顶的索引(指针)】public MyStack() {super();arr new long[10];}public MyStack(int capacity) {super();arr new long[capacity]; // 自…

leetcode刷题:884、977

884.比较含退格的字符串 给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 方法一、用栈 #include <i…

8.MyBatis 操作数据库(进阶)

文章目录 1.动态SQL插入1.1使用注解方式插入数据1.2使用xml方式插入数据1.3何时用注解何时用xml&#xff1f;1.4使用SQL查询中有多个and时&#xff0c;如何自动去除多余and1.4.1方法一&#xff1a;删除and之后的代码如图所示&#xff0c;再次运行1.4.2方法二&#xff1a;加上tr…

Linux服务器上网络端口测试

在使用telnet 111.22.345.66 80在Linux主机上尝试连接目标IP地址111.22.345.66的80端口时&#xff0c;会看到以下四行返回信息的含义解释&#xff1a; Trying 111.22.345.66...&#xff1a; 这一行指示telnet正在尝试与IP地址为111.22.345.66的主机建立连接。这表明telnet正尝…

elasticsearch安装配置注意事项

安装Elasticsearch时&#xff0c;需要注意以下几个重要事项&#xff1a; 1、版本选择&#xff1a;选择与你系统和其他组件&#xff08;如Logstash、Kibana&#xff09;兼容的Elasticsearch版本。 2、Java环境&#xff1a;Elasticsearch是基于Java构建的&#xff0c;因此确保已…

书生·浦语大模型实战营之 OpenCompass大模型评测

书生浦语大模型实战营之 OpenCompass &#xff1a;是骡子是马&#xff0c;拉出来溜溜 为什么要研究大模型的评测&#xff1f; 百家争鸣&#xff0c;百花齐放。 首先&#xff0c;研究评测对于我们全面了解大型语言模型的优势和限制至关重要。尽管许多研究表明大型语言模型在多…

Linux cmake 初窥【2】

1.开发背景 基于上一篇的基础上&#xff0c;再次升级 2.开发需求 基于 cmake 指定源文件目录可以是多个文件夹&#xff0c;多层目录 3.开发环境 ubuntu 20.04 cmake-3.23.1 4.实现步骤 4.1 准备源码文件 工程目录如下 顶层脚本 compile.sh 负责执行 cmake 操作&#xff0…

FSC森林认证是什么?

FSC森林认证&#xff0c;又称木材认证&#xff0c;是一种运用市场机制来促进森林可持续经营&#xff0c;实现生态、社会和经济目标的工具。FSC森林认证包括森林经营认证&#xff08;Forest Management, FM&#xff09;和产销监管链认证&#xff08;Chain of Custody, COC&#…

微搭低代码入门06分页查询

目录 1 创建自定义代码2 编写分页代码3 创建页面4 创建变量5 配置数据列表总结 我们在数据模型章节介绍了微搭后端服务编写的三种方式&#xff0c;包括Http请求、自定义代码、云函数。本篇我们详细讲解一下利用自定义代码开发分页查询的功能。 1 创建自定义代码 打开控制台&am…

Qt——入门基础

目录 Qt入门第一个应用程序 main.cpp widget.h widget.cpp widget.ui .pro Hello World程序 对象树 编辑框 按钮 Qt 窗口坐标系 Qt入门第一个应用程序 main.cpp 这就像一开始学语言时都会打印一个“Hello World”一样&#xff0c;我们先来看看创建好一个项目后&…

LeetCode 难题解析 —— 正则表达式匹配 (动态规划)

10. 正则表达式匹配 思路解析 这道题虽然看起来不难理解&#xff0c;但却存在多种可能&#xff0c;当然这种可能的数量是有限的&#xff0c;且其规律对于每一次判别都使用&#xff0c;所以自然而然就想到用 动态规划 的方法啦 接下来逐步分析可能的情况&#xff1a; &#x…

栈(使用顺序表构建)

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、栈的概念2、栈的数组构建方法2.1 前言2.2 正文2.2.1 栈的初始化2.2.2 栈的销毁2.2.3 压…

Jupyter notebook和 Jupyter lab内核死亡问题的原因和解决方案

写在前面&#xff1a;之前也遇到过几次内核死亡的问题&#xff0c;也一直没有想解决办法。这里总结一下并提出几个解决办法。 首先明确一下jupyter出现内核死亡的原因&#xff1a;jupyter lab 或者 jupyter notebook 本身是一个web服务&#xff0c; 无法支持高并发和频繁的计算…

栈与队列(包括例题一道)

栈 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&…

libevent 梳理

C10K 背景 C10K问题&#xff1a;如何在一台物理机上同时服务 10000 个用户&#xff1f;这里 C 表示并发&#xff0c;10K 等于 10000&#xff1f; C10K 问题本质上是一个操作系统问题&#xff0c;需要考虑&#xff1a; 1.文件句柄数&#xff1a;每个客户连接都代表一个文件描述…