在多个测试文件中使用相同的结构

时间:2017-12-06 23:09:32

标签: testing rust rust-crates

我有两个位于tests目录中的测试文件。每个测试文件都包含一个测试函数和一个公共结构。例如,它们都包含:

#[macro_use] extern crate serde_derive;

#[derive(Deserialize)]
struct MyStructure {
    a_value: u8,
}

#[test]
// ...some test functions...

结构MyStructure在两个测试文件之间完全相同。由于我的结构使用serde_derive包中的宏,因此需要行#[macro_use] extern crate serde_derive

为了避免代码重复,我想只声明一次我的结构。根据我的理解,tests目录中的每个文件都被编译为一个独立的包,因此编辑测试文件并将结构定义放入tests目录中的单独文件似乎是不可能的: / p>

#[macro_use] extern crate serde_derive;

mod structure;

#[test]
// ...some test function...
#[macro_use] extern crate serde_derive;

#[derive(Deserialize)]
struct Structure {
    a_value: u8,
}

第一次尝试导致error[E0468]: an extern crate loading macros must be at the crate root。这是正常的,因为structure现在是一个子模块。

#[macro_use] extern crate serde_derive;移除structure也没有帮助,因为structure被编译为单独的包,现在无法找到Deserialize:{{1 }}

error: cannot find derive macro Deserialize in this scope(包括宏用法)移动到单独的公共文件中的正确方法是什么,并且只为我的所有测试文件定义一次?

0 个答案:

没有答案