测试自定义包

时间:2016-01-11 14:12:01

标签: unit-testing rust rust-crates

我已经在/src/lib.rs中找到了这个箱子,我试图对其进行测试:

#![crate_type = "lib"]
#![crate_name = "mycrate"]

pub mod mycrate {
    pub struct Struct {
        field: i32,
    }

    impl Struct {
        pub fn new(n: i32) -> Struct {
            Struct { field: n }
        }
    }
}

/tests/test.rs处的测试文件:

extern crate mycrate;

use mycrate::*;

#[test]
fn test() {
    ...
}

正在运行cargo test会出现此错误:

tests/test.rs:3:5: 3:16 error: import `mycrate` conflicts with imported crate in this module (maybe you meant `use mycrate::*`?) [E0254]
tests/test.rs:3 use mycrate::*;
                     ^~~~~~~~~

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

crate也自动成为自己名称的模块。因此您无需指定子模块。由于您导入了mycrate包中的所有内容,因此您还导入了mycrate::mycrate模块,这导致了命名冲突。

只需将src/lib.rs的内容更改为

即可
pub struct Struct {
    field: i32,
}

impl Struct {
    pub fn new(n: i32) -> Struct {
        Struct { field: n }
    }
}

也不需要crate_namecrate_type属性。