WingDust 发表于 2021-06-20 22:50
Tags:单元测试
由于社区不能用图片 所以这里把问题发到思否上了。
Rust 单元测试函数需要做什么处理吗?
给你一个 MWE 吧:
#[cfg(test)] mod tests { // 你所谓带返回值的的“测试函数”,其实就是一个辅助函数 fn add(x: i32) -> i32 { x + 1 } #[test] fn it_works() { assert_eq!(2, add(1)); } }
如果你尝试在 #[test] 属性下的函数上添加返回值,编译器提示你 ``main has invalid return type XX ,这说明这个函数和 `main` 一样只接受 `()` 或者 `Result` 类型作为返回值;如果你给这个函数加参数呢,编译器提示你 `functions used as tests can not have any arguments` 。
#[test]
has invalid return type XX
测试函数就是用来测试值正不正确的,不会和一般的函数一样也很正常啊。 都说先去看教程。而且编辑器的报错这么清楚,不支持就是不支持。
-- 👇 WingDust: 我想用单元测试直接测试(cargo test 函数名 有着局部运行这个特点)代码中一小部分的运行过程,
cargo test
也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。
像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数
如果要使用cargo test的话,建议按照官方文档来。
或许可以参考文档测试:https://rustwiki.org/zh-CN/rust-by-example/testing/doc_testing.html
直接在文档中调用该函数。
我想用单元测试直接测试(cargo test 函数名 有着局部运行这个特点)代码中一小部分的运行过程,
Rust Book 和 Rust by Example 都有详细的解释与例子。
需要在lib.rs的mod tests块里进行测试且mod tests上需设置#[cfg(test)]属性,可以用cargo new —lib建立一个例子看看里面测试是怎么写的
测试单元函数为什么要返回一个值呢?把String返回值去掉试试。
评论区
写评论给你一个 MWE 吧:
如果你尝试在
#[test]
属性下的函数上添加返回值,编译器提示你 ``mainhas invalid return type XX
,这说明这个函数和 `main` 一样只接受 `()` 或者 `Result` 类型作为返回值;如果你给这个函数加参数呢,编译器提示你 `functions used as tests can not have any arguments` 。测试函数就是用来测试值正不正确的,不会和一般的函数一样也很正常啊。 都说先去看教程。而且编辑器的报错这么清楚,不支持就是不支持。
--
👇
WingDust: 我想用单元测试直接测试(
cargo test
函数名 有着局部运行这个特点)代码中一小部分的运行过程,也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。
像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数
如果要使用
cargo test
的话,建议按照官方文档来。或许可以参考文档测试:https://rustwiki.org/zh-CN/rust-by-example/testing/doc_testing.html
直接在文档中调用该函数。
--
👇
WingDust: 我想用单元测试直接测试(
cargo test
函数名 有着局部运行这个特点)代码中一小部分的运行过程,也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。
像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数
我想用单元测试直接测试(
cargo test
函数名 有着局部运行这个特点)代码中一小部分的运行过程,也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。
像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数
Rust Book 和 Rust by Example 都有详细的解释与例子。
需要在lib.rs的mod tests块里进行测试且mod tests上需设置#[cfg(test)]属性,可以用cargo new —lib建立一个例子看看里面测试是怎么写的
测试单元函数为什么要返回一个值呢?把String返回值去掉试试。