Reputation: 3767
My application is using the tracing
Rust crate to create log output. How do I print these log messages when I'm running my tests?
Upvotes: 10
Views: 9726
Reputation: 63
You can use the test-log crate. It works by overriding the #[test]
attribute macro, allowing you to include tracing logs seamlessly into your test runs. This means you can see the log output without the need to modify each individual test. Unlike some alternative crates, which may require adding extra lines of code to each test, which is equivalent to calling a self-defined singleton for the tracing init in each test.
Upvotes: 3
Reputation: 3767
You can use the tracing_test
Rust crate for this. It works like this:
#[traced_test]
#[test]
fn plain_old_test() {
...
}
All you have to do is add the tracing_test
to your list of dependencies and decorate your tests with the #[traced_test]
macro.
This also works with tokio_macros
tests, that are decorated with #[tokio::test]
.
Then, as @Yuri mentions, you need to run the tests with the --nocapture
argument: cargo t --nocapture
. This is only relevant if the test succeeds.
Upvotes: 7
Reputation: 20936
Usually, if you need to print the output inside the tests you use --nocapture
flag with the cargo test
command:
$ cargo test -- --nocapture
Can you test if it works in your case?
Upvotes: 4