Использовать одну и ту же структуру в нескольких тестовых файлах
У меня есть два тестовых файла, расположенных в 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
каталог:
#[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
не может быть найден: error: cannot find derive macro Deserialize in this scope
,
Как правильно двигаться MyStructure
(включая использование макроса) в отдельный общий файл и определите его только один раз для всех моих тестовых файлов?