main.rs中,我创建了一些函数来减少main()的大小.在它们内部,我使用 struct 及其方法.

fn handle_input() {
  // some code
}

fn handle_quit() {
  // some code
) {

fn main() {
   // handle_handle_input() being is used here
   // handle_quit() being is used here
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_handle_input() {
        // some code
    }

    #[test]
    fn test_handle_quit() {
        // some code
    }
}

现在,所有的测试都通过了.然而,main.rs变得太大了,所以我想将测试放在它们自己的文件中.

既然我不能再use use super::*岁了,我怎么能做到这一点呢?或者,可能唯一的方法是将这些函数转换为 struct 方法,并将它们导入新的测试文件中?

推荐答案

您可以将模块声明替换为

#[cfg(test)]
mod tests;

并将测试移到与main.rs相同的目录中的文件tests.rs中.文件名必须与上述声明中的模块名匹配.文件tests.rs应该包含代码中mod tests之后的花括号内的所有内容,大括号除外.

通常,将代码和测试放在同一个文件中是很常见的,在Rust中也是如此,因此您可以考虑以不同的方式将文件拆分到模块中.

Rust相关问答推荐

在rust中如何修改一个盒装函数并将其赋回?

将内部类型作为参数的泛型 struct 上的方法

我怎样才能从一个Rust 的日期中go 掉3年?

关于Rust 中回归的逻辑

为什么这是&q;,而让&q;循环是无限循环?

如何循环遍历0..V.len()-1何时v可能为空?

在rust sqlx中使用ilike和push bind

为什么Rust不支持带关联常量的特征对象?

什么时候使用FuturesOrdered?

减少指示ProgressBar在Rust中的开销

为什么我必须使用 PhantomData?在这种情况下它在做什么?

使用 serde::from_value 反序列化为泛型类型

随机函数不返回随机值

如何迭代存储在 struct 中的字符串向量而不移动它们?

write_buffer 不写入缓冲区而是输出零 WGPU

使用占位符获取用户输入

Rust并发读写引起的死锁问题

(let b = MyBox(5 as *const u8); &b; ) 和 (let b = &MyBox(5 as *const u8); ) 之间有什么区别

有什么方法可以通过使用生命周期来减轻嵌套生成器中的当生成器产生时borrow 可能仍在使用错误?

Rust/Serde/HTTP:序列化`Option`