У меня есть набор контрольных тестов для тестирования инициализации и ведения журнала с помощью библиотек журналов. Но мой код паникует в тесте набора, хотя каждый тест может быть выполнен по отдельности, хорошо.
#[bench]
fn bench_fern_multi_unfiltered_line(b: &mut Bencher) {
// Given: we initialize the config with the correct parameters
init_fern();
// When: we test enough iterations
// Then: we should get performance numbers
b.iter(|| {
for i in 0..1000 {
log_multi_info_lines()
}
});
}
#[bench]
fn bench_log4rs_single_unfiltered_line(b: &mut Bencher) {
// Given: we initialize the config with the correct parameters
init_log4rs();
// When: we test enough iterations
// Then: we should get performance numbers
b.iter(|| {
for i in 0..1000 {
log_single_info_line()
}
});
}
Код работает нормально для любого первого данного теста в наборе, хотя затем он паникует по следующему:
---- tests::bench_log4rs_multi_unfiltered_line stdout ----
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: SetLoggerError(())', src\libcore\result.rs:1165:5
...
---- tests::bench_log4rs_single_unfiltered_line stdout ----
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: SetLoggerError(())', src\libcore\result.rs:1165:5
Код паникует, даже если я тестирую только 1 библиотеку за раз. Таким образом, это все еще происходит, когда вы пытаетесь сделать это дважды.
Возможно, существует обходной путь в отношении отмены текущей конфигурации ведения журнала бэкенда во время выполнения, но я хотел понять: почему Rust не допускает этого в своем текущемсостояние?
Версия Rustup + Rust:
active toolchain
----------------
nightly-x86_64-pc-windows-msvc (default)
rustc 1.40.0-nightly (2e7244807 2019-10-04)