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

泰安手机网站建设公司网页设计师需要掌握的领域

泰安手机网站建设公司,网页设计师需要掌握的领域,手机发博客wordpress,一个人在家做网站建设Rust 第18节 软件测试 测试已写的函数 在创建每一个lib crate时#xff0c;rust都会自动生产一个测试 mod;名字为tests; tests mod 被属性 #[cfg(test)] 修饰#xff0c;用于测试#xff1b; 在mod 内#xff0c;需要在函数头上加属性 #[test]进行修饰#xff0c;让其变为…Rust 第18节 软件测试 测试已写的函数 在创建每一个lib crate时rust都会自动生产一个测试 mod;名字为tests; tests mod 被属性 #[cfg(test)] 修饰用于测试 在mod 内需要在函数头上加属性 #[test]进行修饰让其变为测试函数 pub fn add(left: usize, right: usize) - usize {left right }mod tests {use super::*;#[test]fn test1() {let result add(2, 2);assert_eq!(result, 4);} }进行测试 运行 cargo test 命令运行所有的测试函数 当使用 cargo test 命令时Rust会构建一个 Test Runner 可执行文件他会运行标注了 test 的 函数并报告其运行是否成功。 主线程监视每一个测试函数的返回结果如果报错就认为测试失败 在创建库项目时会自动创建测试函数 创建库项目命令 cargo new name --lib assert!()、assert_eq!() 和 assert_nq!() 宏 断言 宏 assert!(); 检查状态是否为 true ; true 测试通过否则调用 painc! 测试失败 assert_eq!() 判断两个数是否相等 assert_ne!() 判断两个数是不是不等 这两个宏当断言失败时都会打出两个参数的值; 这三个宏都可以添加自定义信息当出错时会打印出来在固定的参数后边有一个自定义参数 #[test]fn test_eque() {assert!(my_eque(12, 10),结果不对);}#[test]fn add_two_test(){assert_eq!(4,add_two(2));}#[test]fn add_two_test_v2(){assert_ne!(5,add_two(2));}对于panic进行测试 在特定情况下测试是否会发生panic 加属性 should_panic如果发生painc 测试通过没有发生painc测试不通过 pub fn get_value(value : i32) - i32 {if value 500 {panic!(数据过大);}value }...#[test]#[should_panic]fn get_value_test() {get_value(1000);} ... 让 should_panic 更加精准 单纯的should_panic 只能检测是否发生 panic但是不确定是否为我们期待的painc 可以加上 expected 跟上字符串进行panic 匹配 pub fn value_config(value : i32) {if value 100 {panic!(value is more 100);} if value 0 {panic!(value is less 0);} } ...#[test]#[should_panic(expected value is more 100)]fn value_config_test() {value_config(120);} ... Result 作为测试结果 除了让测试程序painc还可以通过测试函数的返回值来进行判断测试结果。 需要测试函数的返回值为Restul类型 返回Ok;测试通过 返回Err();测试不通过 #[test]fn test_result() - Result(),String {if 2 2 4 {Ok(())} else {Err(测试执行失败.to_string())}}cargo test 命令 当cargo test 不加参数时会进行默认行为 1、并行运行 2、所有测试 3、正常时捕获屏蔽所有输出异常时才会显示 它的参数 分为 1) cargo test的参数 2 cargo test -- 的参数--后的参数后边有空格是给测试生成的二进制文件用的cargo test --help; 显示1 可用参数cargo test -- --help 显示 --后可用参数并行测试时需要保证测试项之间没有依赖且没用共用的全局变量或环境变量等指定并行线程个数 cargo test -- --test-threads1显示函数执行时的输出cargo test -- --show-output按测试的名称运行测试单个测试cargo test 测试函数名参数只能传一个 多个测试参数写 测试名的一部分 或者模块名忽略某个测试项 测试项加属性 ignore默认运行cargo test 时就不会运行该测试项也可以单独运行 ignore 类型的测试项cargo test -- --ignored#[test]#[ignore]fn test_ignore() {assert_eq!(10,100);}测试的分类 1 单元测试 上边均为集成测试的例子小专注某一段代码对某一段代码进行隔离测试一般在代码相同路径建立 tests 模块并加属性标注 #[cfg(test)]这样只有在执行cargo test 时才会编译和运行代码而一般的cargo run 不会进行编译运行单元测试可以测试私有函数 fn fun_2(a : i32,b : i32) - i32 {a b }// 私有函数#[test]fn test_p() {assert_eq!(2,fun_2(1, 1));}2 集成测试 测试代码不在同一路径下不用属性标注 #[cfg(test)]完全位于被测试库外边只能调用测试库的外部接口创建tests目录每一个单独的测试文件都是一个单独的crateuse adder; //导入要测试的lib #[test] fn test_v1() {assert_eq!(4,adder::add(2, 2));}tests 目录会被单独处理 只有运行cargo test 时才会编译运行 运行指定的集成测试 cargo test 函数名运行某个文件下所有集成测试 cargo test --test 文件名由于每个文件都被作为单独的crate,所以各个文件之间数据不共享如果想用不被当做单独的crate进行测试只需要再建一个目录然后在该目录下新建文件即可新的子目录不会被rust当做测试的crate不会在 cargo test 中调用单元测试的crate都可以访问这个文件作为数据共享binary crate 的集成测试 如果只有 src/main.rs没有 src/lib.rs则不能在tests下创建集成测试无法将main.rs 中的函数导入作用域只有 library crate 才能暴露函数给其他crate用binary crate 意味着独立运行
http://www.hkea.cn/news/14343298/

相关文章:

  • 沈阳核工业建设工程总公司网站展馆展厅设计报价
  • 玉山电商网站建设seo优化的内容有哪些
  • 司法公开网站建设情况汇报小说网站编辑怎么做
  • 在百度怎么做网站和推广沈阳网站开发简维
  • 深圳工信部网站wordpress 分享到朋友圈
  • 泗泾做网站公司用网站做平台
  • 企业网站官网模板网站首页制作
  • 网站建设毕业设计综述百度识图软件
  • 合江做网站软装设计专业
  • 好的网站建设启示完整的软件开发流程
  • seo工具助力集群式网站升级连云港网站建设 连云港网站制作
  • 营销型网站如何制作一个网站多大
  • 湖南网站建设设计网站开发手机自适应
  • 网站域名收费吗asp网站模板安装
  • 烟台高端网站开发微营销软件免费下载
  • 网站建设调研报告高仿微博wordpress
  • 网站色彩搭配营销型网站建设的五力原则
  • 免费注册网站怎么做链接网站开发的账务处理
  • 鞍山网站制作三牛网络推广
  • 公司网站维护主要做什么深圳电商页面设计那家好
  • 网站的视频网站seo策划方案案例分析
  • 营销型网站seo公司网站域名如何申请
  • 网站搭建策划书自己做网站的网址
  • 我的世界是怎么做的视频网站旅游做攻略网站好
  • 无锡网站制作电话多少深圳市龙华区民治街道
  • 代码编辑器做热点什么网站好网站开发主要技术路线
  • 上海平台网站建设哪家有学做网站要代码
  • 在网站中搜索关键字建立网站的技术
  • 苏州网站建设品牌公司麻豆秋白色蕾丝半身裙
  • 企业网站管理系统c郑州企业健康码二维码怎么申请