2

努力将集成测试包含到我的项目中,但我无法导入库。我认为新规则将允许我只写一个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
4

1 回答 1

2

所以,我注意到OP 说实际Cargo.toml匹配给定的一个“除了 [OP is] ... 使用几个库”。

我认为导致问题的是库 - 如果您有库(名称不同),则需要在use语句中使用库的名称。IE:

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;

...

我有一个类似的错误消息,最初是在我意识到这个问题之前搜索时发现了这篇文章。所以即使这不是原始海报的问题,也许这个答案会帮助其他人......

于 2020-11-11T15:36:25.843 回答