当前位置: 首页 > news >正文

rust项目组织结构和集成测试举例

概述

在学习rust的过程中,当项目结构略微复杂的时候,写集成测试的时候发现总是不能引用项目中的代码,导致编写测试用例失败。查阅了教程,一般举例都很简单。查阅了谷歌和百度以及ai,也没有找到满意的答案。这里记录一下,供大家参考。

项目结构(举例)在这里插入图片描述

cargo.toml

[package]
name = "test_rust"
version = "0.1.0"
edition = "2021"[dependencies]
rusqlite = { version = "0.31.0", features = ["bundled"] }[lib]
name = "test_rust"
path = "src/my_lib.rs"

my_lib.rs

pub mod rust_lang;

rust_lang/mod.rs

pub mod trait_sample;
pub mod borrow_mut;
......

rust_lang/borrow_mut/mod.rs

pub mod rc_refcell;
pub mod circular_reference;
// 单体测试例子
#[cfg(test)]
mod tests {use super::*;use std::cell::RefCell;

main.rs

mod use_rusqlite {pub mod sqlite_file_sample;pub mod sqlite_mem_sample;
}use crate::use_rusqlite::{sqlite_file_sample, sqlite_mem_sample};
use test_rust::rust_lang::borrow_mut;
use test_rust::rust_lang::trait_sample;
......

tests/integration_test_sample.rs

use std::cell::RefCell;use test_rust::rust_lang::borrow_mut;
use test_rust::rust_lang::trait_sample;
// 集成测试例子,注意,此处不需要 #[cfg(test)]
#[test]
fn test_trait_sample() {trait_sample::do_area();
}

总结

1.要想集成测试的测试文件中顺利引用src目录下的代码函数和功能,项目结构各层
结构之间必须有完整的引用和指示关系(参考上面各mod.rs),至于模块如何组织请
自行查阅教程。
2.main.rs自己引用src下的各层模块时,mod.rs中的各层模块定义不是必须的,
只要在main.rs中明确各层mod关系即可。
3.cargo.toml中的[lib]定义不是必须的,如果使用默认的lib.rs文件,则不需要特别指定。rust会默认使用lib.rs作为库文件

更详细的例子可以参考:
https://github.com/wang-xuewen/test_rust

相关文章:

rust项目组织结构和集成测试举例

概述 在学习rust的过程中,当项目结构略微复杂的时候,写集成测试的时候发现总是不能引用项目中的代码,导致编写测试用例失败。查阅了教程,一般举例都很简单。查阅了谷歌和百度以及ai,也没有找到满意的答案。这里记录一…...

软件文档交付清单(直接套用合集)

软件文档交付清单是指在软件开发项目完成后,开发团队需要准备的一份详细清单,用于确保交付的软件产品符合客户需求并达到预期的质量标准。以下是软件文档交付清单中可能包含的一些关键要素 软件开发文档:这包括需求文档、设计文档、测试文档等…...

ModuleNotFoundError: No module named ‘ultralytics.utils‘

项目场景he 问题描述 提示:这里简述项目相关背景: model YOLO(modelr./yolov8m-cls.pt) 加载预训练模型时报错。 ModuleNotFoundError: No module named ultralytics.utils warning: bug: 原因分析: 很可能是提前下载的预训练模型出了…...

2024智能计算、大数据应用与信息科学国际会议(ICBDAIS2024)

2024智能计算、大数据应用与信息科学国际会议(ICBDAIS2024) 会议简介 智能计算、大数据应用与信息科学之间存在相互依存、相互促进的关系。智能计算和大数据应用的发展离不开信息科学的支持和推动,而信息科学的发展又需要智能计算和大数据应用的不断拓展和应用。智…...

秋招复习笔记——八股文部分:操作系统

笔试得刷算法题,那面试就离不开八股文,所以特地对着小林coding的图解八股文系列记一下笔记。 这一篇笔记是图解系统的内容。 硬件结构 CPU执行程序 计算机基本结构为 5 个部分,分别是运算器、控制器、存储器、输入设备、输出设备&#xf…...

每日一题:C语言经典例题之杨辉三角

题目描述 输出杨辉三角形。 输入 第一行输入一个整数 n (1<n<10)。 输出 输出杨辉三角形的前n行&#xff0c;每个数字占8格左对齐。 样例输入 4 样例输出 1 1 1 1 2 1 1 3 3 1 代码&#xff1a; #inc…...

1. TypeScript: JavaScript 的超集,为大型应用而生

引言 在现代的前端开发领域&#xff0c;JavaScript 无疑是一门极其流行的语言。然而&#xff0c;随着前端项目的日益复杂&#xff0c;JavaScript 本身的一些特性使得维护和扩展大型代码库变得困难。这就是 TypeScript 应运而生的背景。TypeScript 是一种由微软开发的开源语言&…...

vex-table—— 获取插入或修改数据后的tableData

例子来自vxe-table。在开发过程中发现新增数据后&#xff0c;输出this.tableData&#xff0c;发现数据并没有被修改 想要获取更新的数据方式为 mounted () {const $table this.$refs.xTableconsole.log("&#x1f680; ~ mounted ~ $table:", $table.tableData)},...

通俗易懂地解释Go语言不同版本中垃圾回收机制的演进过程

完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go 1.3时代 - 标记清除算法 这就像一个人要打扫房间,首先需要暂停其他活动。然后开始查看房间里的每件物品,对于自己仍需要使用的物品做上记号。查看完毕后…...

shamrockcms代码审计-啥也没有

shamrockcms 环境搭建 使用阿里源&#xff0c;创建数据库&#xff0c;运行shamrockcms.sql文件&#xff0c;将configure.properties中的jdbc修改为自己本地或者其他ip数据库连接&#xff0c;并且将ueditor.config.json中的master修改为localhost或者其他自己设置的ip 危险组件…...

【C++】排序算法 --快速排序与归并排序

目录 颜色分类&#xff08;数组分三块思想&#xff09;快速排序归并排序 颜色分类&#xff08;数组分三块思想&#xff09; 给定⼀个包含红⾊、⽩⾊和蓝⾊、共 n 个元素的数组 nums &#xff0c;原地对它们进⾏排序&#xff0c;使得相同颜⾊ 的元素相邻&#xff0c;并按照红⾊、…...

(Python)根据经纬度从数字高程模型(DEM)文件获取高度

基本介绍 在地理信息系统&#xff08;GIS&#xff09;和遥感中&#xff0c;数字高程模型&#xff08;Digital Elevation Model&#xff0c;简称DEM&#xff09;是一种表示 地表或地形高程信息的重要数据。DEM数据通常以栅格&#xff08;raster&#xff09;形式存在&#xff0…...

【WPF应用41】WPF中的Expander控件详解

Windows Presentation Foundation&#xff08;WPF&#xff09;中的Expander控件是一个用于显示详细信息的交互式UI元素。它允许用户通过点击标题来展开或折叠内容区域。Expander控件通常用于在界面上组织内容&#xff0c;提供一种可见/隐藏的功能&#xff0c;以帮助用户专注于当…...

golang变量初始化顺序

顺序&#xff1a; 1.引用的包 2.全局变量 3.init()函数 4.main()函数 package pkgimport "fmt"func init() {fmt.Println("pkg init") }package mainimport ("fmt"_ "gg/pkg" )var v val()func val() int {fmt.Println("func()…...

魔众 文库配置异步转换

同步转换 系统默认使用同步转换&#xff0c;即用户上传文档提交接口瞬间&#xff0c;系统会立即进行转换。 同步转换容易造成页面卡顿&#xff0c;转换时间超长的情况下&#xff0c;系统接口会超时。 异步转换 系统支持异步转换&#xff0c;即用户上传文档提交接口瞬间&…...

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中&#xff0c;作为原王下七武海之一的多弗朗明哥&#xff0c;可以说是新世界最大的流氓头子&#xff0c;拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介&#xff0c;控制着世界各地的诸多产业&#xff0c;人造恶魔果实工厂就…...

一些考研经验

前言 考研结束已有半个月&#xff0c;之前一直想写经验贴&#xff0c;奈何感觉自己本身就比较菜&#xff0c;考了两年才堪堪上岸&#xff0c;所以有些犹豫&#xff0c;拖拖沓沓到现在&#xff0c;思虑再三最终决定把自己对于考研的一些拙见记录一下&#xff0c;供各位参考。 …...

StockTrading AI小模型股票自动交易系统 转载

Stock-Trading StockTrading AI小模型股票自动交易系统 项目文档 Stock-Trading 语雀 项目展示 功能介绍 对接证券平台&#xff0c;实现股票自动化交易使用QuartZ定时任务调度&#xff0c;每日自动更新数据使用DL4J框架实现LSTM模型指导股票买入&#xff0c;采用T1短线交易策…...

01背包问题合集 蓝桥OJ

一、蓝桥OJ 1174小明的背包1 模板题 思路&#xff1a; 用二维数组dp判断最大价值&#xff0c;i表示物品数量&#xff0c;j表示物品体积&#xff0c;如果 j > V 则无需继续&#xff0c; j > w 物品还能再增加&#xff0c;同样价值也增加&#xff0c;否则继承之前的价值&am…...

Nuxt3 实战 (三):使用 release-it 自动管理版本号和生成 CHANGELOG

release-it 能做什么&#xff1f; 增加版本号并提交 Git生成变更日志&#xff08;Changelog&#xff09;并提交到 Git创建 Git 标签并推送到远程仓库发布到 npm 等软件仓库在 GitHub、GitLab 等平台创建发行版 前置知识 在看这篇文章之前&#xff0c;我们有必要了解一下 Sem…...

手把手教你用n8n和Gemini 2.5 Flash搭建英语作文批改机器人(附完整工作流JSON)

从零构建AI英语作文批改系统&#xff1a;基于n8n与Gemini的自动化实践 在数字化教育浪潮中&#xff0c;教师面临的最大挑战之一是如何高效处理大量学生作业。英语作文批改尤其耗时——需要逐字阅读、语法检查、内容评估&#xff0c;最后还要给出建设性反馈。传统方式下&#xf…...

基于LSTM的CasRel模型变体实现与性能对比分析

基于LSTM的CasRel模型变体实现与性能对比分析 最近在关系抽取这个领域&#xff0c;大家的目光似乎都被Transformer架构给吸引走了。确实&#xff0c;像BERT、RoBERTa这些基于自注意力机制的模型&#xff0c;在各类NLP任务上表现都相当亮眼。但这就让我产生了一个疑问&#xff…...

lingbot-depth-vitl14镜像兼容性说明:insbase-cuda124-pt250-dual-v7底座深度适配细节

lingbot-depth-vitl14镜像兼容性说明&#xff1a;insbase-cuda124-pt250-dual-v7底座深度适配细节 1. 引言&#xff1a;为什么你需要关注这个深度估计模型&#xff1f; 如果你正在做机器人、自动驾驶或者AR/VR相关的项目&#xff0c;肯定遇到过这样的问题&#xff1a;怎么让机…...

Proteus仿真实战:基于STM32的智能环境感知与联动控制系统(附源码)

1. 项目背景与核心功能 想象一下这样的场景&#xff1a;当你走进书房时&#xff0c;灯光自动亮起&#xff1b;当室内温度过高时&#xff0c;空调自动开启&#xff1b;当光线不足时&#xff0c;窗帘缓缓拉开。这些看似科幻的场景&#xff0c;其实用STM32单片机和Proteus仿真就能…...

Qwen3-14B部署避坑指南:从环境配置到服务上线的完整流程

Qwen3-14B部署避坑指南&#xff1a;从环境配置到服务上线的完整流程 1. 环境准备与系统要求 在开始部署Qwen3-14B之前&#xff0c;确保你的硬件和软件环境满足以下要求&#xff1a; 1.1 硬件配置建议 组件最低配置推荐配置GPUNVIDIA T4 (16GB)NVIDIA A10G (24GB)或A100 (40…...

PyTorch 2.8镜像一键部署教程:支持Slurm集群调度的HPC环境快速接入

PyTorch 2.8镜像一键部署教程&#xff1a;支持Slurm集群调度的HPC环境快速接入 1. 镜像概述与核心优势 PyTorch 2.8深度学习镜像是一个经过深度优化的高性能计算环境&#xff0c;专为现代AI工作负载设计。这个预配置环境最大的特点是开箱即用&#xff0c;免去了繁琐的环境配置…...

解密Wallpaper Engine资源宝库:RePKG工具完全实战指南

解密Wallpaper Engine资源宝库&#xff1a;RePKG工具完全实战指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专为Wallpaper Engine设计的开源资源处理工具&#xf…...

Calypso vs PC-DMIS:三坐标两大软件脱机编程实战对比与选型指南

Calypso vs PC-DMIS&#xff1a;三坐标测量软件脱机编程深度对比与实战选型策略 在精密制造领域&#xff0c;三坐标测量机(CMM)的脱机编程能力直接决定了检测效率与资源利用率。作为行业两大标杆&#xff0c;蔡司Calypso与海克斯康PC-DMIS在用户界面设计、编程逻辑、仿真验证等…...

Qt跨平台即时通讯实战:从界面设计到TCP通信的完整实现

1. Qt跨平台即时通讯开发概述 用Qt框架开发即时通讯软件最大的优势就是"一次编写&#xff0c;到处运行"。我去年接手过一个项目&#xff0c;需要在Windows和Linux双平台上部署聊天工具&#xff0c;当时尝试过多种技术方案&#xff0c;最终Qt以绝对优势胜出。想象一下…...

深度解析:基于摄像头的远程生理监测工具箱rPPG-Toolbox实战指南

深度解析&#xff1a;基于摄像头的远程生理监测工具箱rPPG-Toolbox实战指南 【免费下载链接】rPPG-Toolbox rPPG-Toolbox: Deep Remote PPG Toolbox (NeurIPS 2023) 项目地址: https://gitcode.com/gh_mirrors/rp/rPPG-Toolbox 远程生理监测技术正在医疗健康领域引发革命…...