< 返回版块

WingDust 发表于 2021-06-20 22:50

Tags:单元测试

由于社区不能用图片 所以这里把问题发到思否上了。

Rust 单元测试函数需要做什么处理吗?

评论区

写评论
苦瓜小仔 2021-06-21 10:47

给你一个 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` 。

测试函数就是用来测试值正不正确的,不会和一般的函数一样也很正常啊。 都说先去看教程。而且编辑器的报错这么清楚,不支持就是不支持。

--
👇
WingDust: 我想用单元测试直接测试(cargo test 函数名 有着局部运行这个特点)代码中一小部分的运行过程,

也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。

像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数

likicese 2021-06-21 07:15

如果要使用cargo test的话,建议按照官方文档来。

或许可以参考文档测试:https://rustwiki.org/zh-CN/rust-by-example/testing/doc_testing.html

直接在文档中调用该函数。

--
👇
WingDust: 我想用单元测试直接测试(cargo test 函数名 有着局部运行这个特点)代码中一小部分的运行过程,

也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。

像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数

作者 WingDust 2021-06-21 06:10

我想用单元测试直接测试(cargo test 函数名 有着局部运行这个特点)代码中一小部分的运行过程,

也就是函数,而这个函数本身就是属于这个总代码一部分,有返回值应该很正常。

像使用代码中的函数直接变成测试函数,来(局部运行)快速运行、测试函数的正确,当函数达到满意时,再变成正常函数

苦瓜小仔 2021-06-21 01:10

Rust Book 和 Rust by Example 都有详细的解释与例子。

Z0main 2021-06-20 23:23

需要在lib.rs的mod tests块里进行测试且mod tests上需设置#[cfg(test)]属性,可以用cargo new —lib建立一个例子看看里面测试是怎么写的

likicese 2021-06-20 23:19

测试单元函数为什么要返回一个值呢?把String返回值去掉试试。

1 共 6 条评论, 1 页