unit-testing - 编写集成测试时如何访问主包中的函数?

标签 unit-testing testing rust rust-cargo

当创建一个像这样的测试项目时:

cargo init --bin projectname
mkdir projectname/tests
echo "extern crate projectname;" > projectname/tests/test.rs
cd projectname/
cargo build

我在测试时遇到这个错误:

cargo test
   Compiling projectname v0.1.0 (file:///home/username/Lab/projectname)
error[E0463]: can't find crate for `projectname`
 --> tests/test.rs:1:1
  |
1 | extern crate projectname;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate

如何从 projectname/tests/test.rs 访问“projectname/src/main.rs”中的函数?

最佳答案

How can I access functions in ´projectname/src/main.rs´ from projectname/tests/test.rs?

你不能。


二进制文件不能用作外部 crate(就像不能将 ELF 二进制文件用作共享对象/库一样)

你只需要改变你的初始化

cargo init --lib projectname

或者将你的 main.rs 重命名为 lib.rs

如果你真的想坚持使用 main,你可以看看 Rust package with both a library and a binary? .

关于unit-testing - 编写集成测试时如何访问主包中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51842332/

相关文章:

unit-testing - 为什么在单元测试中,域类的逻辑之前和之后会收到 “No such property”?

ruby-on-rails - Cucumber 测试有 60% 的时间在传递功能代码时失败的常见原因有哪些?

rust - 为什么不使用 Option unwrap move 值?

rust - 如何为函数提供仅类型参数?

rust - UdpSocket.recv_from 失败并显示 "end of file",但我可以在 Wireshark 中看到传入的包

javascript - Jest/enzyme : How to test for . 然后和嵌套异步函数的.catch

objective-c - 如何为框架配置 OCUnit 测试包?

python - 你如何模拟一个在单元测试中应用了装饰器的函数?

android - Appium/Protractor 测试不在真实设备上运行.APK

go - 无法从 GoLand 运行 go 测试(Intellij Idea): compilation failed