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

优秀网站管理员界面十分好看的网站

优秀网站管理员,界面十分好看的网站,寿光建设集团网站,哪个购物平台正品喜欢的话别忘了点赞、收藏加关注哦#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵#xff01;(#xff65;ω#xff65;) 11.4.1. 验证错误处理的情况 测试函数出了验证代码的返回值是否正确#xff0c;还需要验证代码是否如预期的去处理了发生错误的情况。比…喜欢的话别忘了点赞、收藏加关注哦对接下来的教程有兴趣的可以关注专栏。谢谢喵(ω) 11.4.1. 验证错误处理的情况 测试函数出了验证代码的返回值是否正确还需要验证代码是否如预期的去处理了发生错误的情况。比如说可以编写一个测试来验证代码是否在特定情况下发生了panic!。 这种测试需要为函数额外增加should_panic属性。使用它标记的函数如果在函数内发生了恐慌则代表通过测试反之就失败。 看个例子 pub struct Guess {value: i32, }impl Guess {pub fn new(value: i32) - Guess {if value 1 || value 100 {panic!(Guess value must be between 1 and 100, got {value}.);}Guess { value }} }#[cfg(test)] mod tests {use super::*;#[test]#[should_panic]fn greater_than_100() {Guess::new(200);} }结构体Guess有一个存储u32类型数据的字段value它有一个关联函数new用于创建一个Guess实例但前提是传进new的参数大于1小于100否则就要恐慌。greater_than_100这个测试函数测试给new函数传入大于100的值这时候应该发生恐慌所以为这个测试函数添加了一个should_panic的attribute(属性)也就是写#[should_panic]。 测试结果 $ cargo testCompiling guessing_game v0.1.0 (file:///projects/guessing_game)Finished test profile [unoptimized debuginfo] target(s) in 0.58sRunning unittests src/lib.rs (target/debug/deps/guessing_game-57d70c3acb738f4d)running 1 test test tests::greater_than_100 - should panic ... oktest result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sDoc-tests guessing_gamerunning 0 teststest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s下面来人为引入bug把new函数里的value 100的判断去掉 pub struct Guess {value: i32, }impl Guess {pub fn new(value: i32) - Guess {if value 1 || value 100 {panic!(Guess value must be between 1 and 100, got {value}.);}Guess { value }} }#[cfg(test)] mod tests {use super::*;#[test]#[should_panic]fn greater_than_100() {Guess::new(200);} }这时候测试函数中的Guess::new(200);就不会恐慌但是因为它添加了should_panic这个attribute所以本应该恐慌的函数没有恐慌就会导致测试失败 $ cargo testCompiling guessing_game v0.1.0 (file:///projects/guessing_game)Finished test profile [unoptimized debuginfo] target(s) in 0.62sRunning unittests src/lib.rs (target/debug/deps/guessing_game-57d70c3acb738f4d)running 1 test test tests::greater_than_100 - should panic ... FAILEDfailures:---- tests::greater_than_100 stdout ---- note: test did not panic as expectedfailures:tests::greater_than_100test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00serror: test failed, to rerun pass --lib11.4.2. 让should_panic更精确 有的时候使用should_panic进行的测试会有点含糊不清因为它仅仅能够说明被检查的代码是否发生了恐慌即使这个恐慌和程序员预期的恐慌不一样。 为了使测试更精确可以为should_panic添加一个可选的expected参数。这样程序就会检查失败消息中是否包含所指定的文字。 看个例子 pub struct Guess {value: i32, }impl Guess {pub fn new(value: i32) - Guess {if value 1 {panic!(Guess value must be greater than or equal to 1, got {value}.);} else if value 100 {panic!(Guess value must be less than or equal to 100, got {value}.);}Guess { value }} }#[cfg(test)] mod tests {use super::*;#[test]#[should_panic(expected less than or equal to 100)]fn greater_than_100() {Guess::new(200);} }在刚才的结构体上稍微进行了修改把new函数里value 1和value 100的情况分开写了两个不同的恐慌信息。给should_panic属性添加了expected参数后面跟的就是期待的报错信息。只有测试函数恐慌并且恐慌信息包括期待的报错信息才算测试成功否则就算失败。 这个程序肯定能成功。 一样的套路我们来手动引入错误比如我们把new函数里小于1和大于100的恐慌信息交换一下 pub struct Guess {value: i32, }impl Guess {pub fn new(value: i32) - Guess {if value 1 {panic!(Guess value must be less than or equal to 100, got {value}.);} else if value 100 {panic!(Guess value must be greater than or equal to 1, got {value}.);}Guess { value }} }#[cfg(test)] mod tests {use super::*;#[test]#[should_panic(expected less than or equal to 100)]fn greater_than_100() {Guess::new(200);} }测试结果 $ cargo testCompiling guessing_game v0.1.0 (file:///projects/guessing_game)Finished test profile [unoptimized debuginfo] target(s) in 0.66sRunning unittests src/lib.rs (target/debug/deps/guessing_game-57d70c3acb738f4d)running 1 test test tests::greater_than_100 - should panic ... FAILEDfailures:---- tests::greater_than_100 stdout ---- thread tests::greater_than_100 panicked at src/lib.rs:12:13: Guess value must be greater than or equal to 1, got 200. note: run with RUST_BACKTRACE1 environment variable to display a backtrace note: panic did not contain expected stringpanic message: Guess value must be greater than or equal to 1, got 200.,expected substring: less than or equal to 100failures:tests::greater_than_100test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00serror: test failed, to rerun pass --lib失败消息表明此测试确实发生了恐慌但是恐慌消息不包含less than or equal to 100预期字符串。在这种情况下我们确实收到的恐慌信息是 Guess value must be greater than or equal to 1, got 200.。根据这个就可以纠错。
http://www.hkea.cn/news/14446840/

相关文章:

  • 网站建设公司的运营方式唐山网站搭建
  • 服装企业的网站建设重庆免费微网站建设
  • 网站推广连接怎么做的石家庄哪有个人建站的
  • 枣庄市网站建设seo网站培训班
  • 做网站卖大闸蟹ps2017做网站
  • 怎么做一元购物网站网站前端语言
  • 网站开发补充合同深圳网站建设汤小巧
  • 开发移动网站宁夏一站式网站建设
  • 网站上线过程网站域名怎么查询备案价格
  • 怎么做企业曝光引流网站网站建设合作签约报道
  • 怎样自己制作公司网站上传网站建设标志图
  • 用h5开发的网站模板下载wordpress 无法处理图像.请返回重试.
  • 做网站学什么代码商城手机网站怎么做
  • 山西城乡建设网站WordPress随机置顶插件
  • 大连网站制作团队名片式网站模板
  • 做的好的网站wordpress公众号登录
  • 手机p2p网站网站制作建立
  • 如何搭建手机网站源码彩票娱乐网站建设开发
  • 网站做推广团队广州注册公司在哪个网站
  • 重庆网站制作珠海公司技术提供微信网站开发
  • 网站技术报务费如何做会计分录不允许做企业网站
  • 网站推广软文范文网站建设招标书组成
  • 天津网站建设服务进销存软件终身免费版
  • 酷炫网站推荐800元网站建设
  • 网站制作网址惠州高端模板建站
  • 品牌网站设计制作公司推荐饮食类网站
  • 建设商场黄金网站成全视频免费高清观看在线小说
  • 雕塑网站源码邯郸中材建设有限责任公司网站
  • 网站建设协议书模板 完整版网络彩票网站开发
  • 网站建设风险怎样规避WordPress发展史