Zaobserwowałem, że cargo test
przeprowadziłem testy w kolejności alfabetycznej, więc wymyśliłem bardzo brudny hack, aby zainicjować rejestrator.
- Zrobiłem moduł o nazwie
aaa_testing
znajdujący się wewnątrz korzenia skrzyni.
Wewnątrz modułu napisałem inicjator rejestratora.
#[test]
fn initialize_logger() {
env_logger::init();
}
Tak zrobiłem stworzyć test, który będzie zawsze przejdzie, ale jeśli chcesz mieć test inicjalizacji rejestratora można zrobić assert!(env_logger::try_init().is_ok());
Shepmaster podkreślić, że cargo test
wykonuje testy asynchronicznie i może uniemożliwić rejestrację pierwszych kilku testów. Aby temu zapobiec, testy można uruchomić w tym samym wątku. (Może to spowodować problemy z wydajnością, więc ta odpowiedź nie powinien być stosowany, jeśli potrzebujesz wielu wątków do testowania projektu.)
Jeśli chcesz kontrolować liczbę jednoczesnych przypadków testowych działa, przechodzą opcję --test-threads
do plików binarnych testowych:
cargo test -- --test-threads=1
jest to bardzo zły pomysł, ponieważ ciężarowy biegnie równolegle testy domyślnie. To prawdopodobnie wprowadzi próbny brak płynności w kilku pierwszych testach przeprowadzanych w tym samym czasie. – Shepmaster
Huh, nie wiedziałem o tym, nie są one dla mnie równoległe. Dzięki za napiwek. Ok Dowiedziałem się z 'ładunku testowego --help', że liczba wątków testowych to liczba procesorów, które mam. Zaktualizuję odpowiedź, aby to zauważyć. –
[Domyślnie działają równolegle] (https://doc.rust-lang.org/stable/book/second-edition/ch11-02-running-tests.html#running-tests-in-parallel-or- po kolei), więc jeśli nie wyłączyłeś tego wyraźnie, to nadal będzie to miało wpływ na testy. – Shepmaster