文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

深入掌握Rust测试:从基础用例到控制测试执行的完全指南

2024-11-29 23:51

关注

编写测试函数

当使用Cargo创建lib类别的Rust包时,Cargo会为我们自动生成测试模块。下面是一个简单的测试例子:

#[cfg(test)]
mod tests {
    #[test]
    fn it_works() {
        assert_eq!(2 + 2, 4);
    }
}

测试函数需要使用#[test]属性进行标记。在测试函数中,使用assert_eq!宏来进行结果断言,从而验证被测试的代码是否符合预期。

使用cargo test运行测试

要运行所有测试,只需在项目根目录下运行以下命令:

$ cargo test

当测试用例较多时,你可能希望只运行部分测试或对输出结果进行特定的控制。这时,你可以使用命令行参数来实现。

控制测试行为

控制测试的并发行为

默认情况下,Rust以多线程的形式并行执行各个测试用例,如果你想要改变测试执行的并行程度,可以通过以下命令:

$ cargo test -- --test-threads=1

这里的--test-threads=1告诉测试程序以单线程执行所有测试。

显示测试函数中的输出

如果你希望在测试成功时也能看到println!等宏的输出内容,你可以使用以下命令:

$ cargo test -- --show-output

运行特定的测试

如果你只想运行名称中包含指定关键字的测试用例,你可以通过名称来过滤测试:

$ cargo test add

上面的命令仅运行名称中包含add字符串的测试用例。

处理panic的测试

在Rust中,我们还可以测试那些预期会发生panic的代码。当你的函数在某些条件下应该触发panic时,这会非常有用:

#[cfg(test)]
mod tests {
    #[test]
    #[should_panic]
    fn test_panic() {
        assert!(false, "This test should panic");
    }
}

通过使用#[should_panic]属性,你可以指定一个测试函数应当触发panic。

自定义panic信息

对于需要具体panic信息的情况,我们可以使用expected参数,如下所示:

#[cfg(test)]
mod tests {
    #[test]
    #[should_panic(expected = "specific error message")]
    fn test_panic_with_message() {
        panic!("specific error message");
    }
}

这样你就可以指定期望触发的具体panic信息。

使用Result测试错误

除了使用panic!进行测试之外,你还可以返回Result类型来表示测试的成功或失败:

#[cfg(test)]
mod tests {
    #[test]
    fn test_result() -> Result<(), String> {
        if 2 + 2 == 4 {
            Ok(())
        } else {
            Err(String::from("two plus two does not equal four"))
        }
    }
}

如果测试失败,将返回一个包含错误信息的Err值。

通过上述深入的讲解和丰富的示例,相信你已经对Rust中的测试有了较为全面的理解。现在,应用这些知识点到你的Rust项目中,可以让你的代码更加稳健,降低潜在的错误和问题。

来源:Rust开发笔记内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯