正在努力将集成测试包含在我的项目中,但我无法导入库。我以为新规则会允许我只写一个use
声明,但它进展得不是很顺利:)
下面的代码显示了相关组件。这不应该是有效的吗?
Cargo.toml
[package]
name = "myswankynewpackage"
version = "0.1.0"
authors = ["Me Myself <me.myself@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
tests/tests.rs
use myswankynewpackage;
// Also tried extern crate
// extern crate myswankynewpackage;
#[cfg(test)]
mod integration {
use super::*;
mod module{
#[test]
fn module_test() {
}
}
}
我收到一条错误消息,说找不到板条箱
error[E0432]: unresolved import `myswankynewpackage`
--> tests/tests.rs:1:5
|
1 | use myswankynewpackage;
| ^^^^^^^^^^^^^^^^^^ no `myswankynewpackage` external crate
所以,我注意到 OP 说实际Cargo.toml
与给定的"除了 [OP 是] ......使用几个库。
我认为导致问题的是库 - 如果您有库(名称不同(,则需要在use
语句中使用库的名称。 即:
Cargo.toml
[package]
name = "myswankynewpackage"
version = "0.1.0"
authors = ["Me Myself <me.myself@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
tests/tests.rs
[lib]
name = "myswankynewlib"
path = "src/lib.rs"
tests/tests.rs
// WRONG!
// use myswankynewpackage;
// RIGHT!
use myswankynewlib;
...
我有一个类似的错误消息,最初是在我意识到这个问题之前搜索时找到这篇文章的。 所以即使这不是原始海报的问题,也许这个答案会对其他人有所帮助......