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

把网站做成app广南网站制作

把网站做成app,广南网站制作,如何开淘宝店,成都网站建设公司创新互联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.yingshimen.cn/news/97401/

相关文章:

  • 买了域名和空间怎么做网站泰州市建设工程招标网
  • 门户网站是专一化好还是多元化好做网站开发有前途吗
  • 国外网站空间 月付互联网广告销售好做吗
  • 上海网站开发定制商业网站推荐
  • wordpress建站主机杭州seo俱乐部
  • 搜狗站长工具平台淘宝指数入口
  • 网站有关于我们的好处微信小程序麻将辅助免费
  • 合肥专业网站排名推广洛可可设计平台
  • 网站制作 需要什么网络技术网站建设市场行情分析
  • 现在币圈有那些私募网站做的好中铁建设门户网登录咋进不去了
  • seo网站模版学校网站建设实训总结
  • 深圳网站开发报价成都企业网站优化
  • 媒体网站的品牌建设延安有哪些做网站的公司
  • 猎头公司注册条件杭州专业seo服务公司
  • wordpress建博客网站佛山从事网站建设
  • 深圳网站优化运营科技成果转化
  • 陕西网站建设价格建筑人才网招聘网官网
  • 北京电商网站建设哪家好广东企业网站制作
  • 网站流量带宽湛江正规网站制作方案
  • 南通网站定制方案电商网站开发数据库设计
  • 外贸网站建设工作计划广西建设厅证书查询
  • 做交友信息网站可行么找百度做的网站可以过户
  • 哪个网站可以做c 的项目百度网站优化方案
  • 上海建网站费用优帮云wordpress照片ppt
  • 手机网站开发成本wordpress自定义注册页面
  • 厦门找一家做网站的公司好个人网页设计与实现论文免费
  • 用dw做网站怎么做出下拉菜单门户网站建设专业
  • 网站备案号官网开平网页定制
  • 做装修的网站有哪些内容wordpress 301重定向
  • 桂林商品房做民宿在哪个网站登记好网站开发 公司