如何查找Rust项目测试二进制文件?测试函数调试问题咨询
解决测试相关的两个问题
1. 测试二进制文件的位置 & 更便捷的测试运行方式
你提到的直接调用测试二进制文件的方法确实可行,但其实Cargo已经提供了更省心的操作方式,不用手动找文件路径。先回答你的问题:默认情况下,测试二进制文件会生成在target/debug/deps/目录下,文件名是你的项目名称加上一串随机哈希值(比如my_project-abcdef123456)。不过更推荐直接用Cargo命令来运行特定测试,步骤往下看。
2. 让println!生效并运行指定的test_handle_igmp测试
你的测试带有#[cfg(feature = "proto-igmp")]标记,这意味着只有启用proto-igmp这个feature时,该测试才会被编译。同时默认情况下,Rust测试会捕获所有标准输出,导致println!的内容看不到。所以你需要同时满足三个条件:启用feature、指定测试名、禁用输出捕获。
直接运行这条命令就能搞定所有需求:
cargo test test_handle_igmp --features proto-igmp -- --nocapture
我拆解一下每个部分的作用:
test_handle_igmp:告诉Cargo只运行名字匹配这个函数的测试(如果有重名测试,可以加上--exact参数来精确匹配)--features proto-igmp:启用测试依赖的feature,确保test_handle_igmp被编译并包含在测试集中-- --nocapture:--用来区分Cargo自身的参数和传递给测试二进制的参数,--nocapture则禁用输出捕获,让println!的内容直接显示在终端里
如果非要手动运行测试二进制文件,步骤是这样的:
- 先编译测试并启用feature:
cargo build --tests --features proto-igmp - 到
target/debug/deps/目录下找到对应的测试二进制文件 - 运行它并指定测试名和禁用捕获:
./target/debug/deps/your_project_hash --test test_handle_igmp --nocapture
但显然第一种方法更简单省心~
内容的提问来源于stack exchange,提问作者Poperton
相关产品推荐
相关产品推荐

