Rustのテストでprint出力をさせてみる
はじめに
- Rustでテストを行う際、
println!
等の出力を表示させる方法を知りたくて調べたので、自分への備忘録も兼ねて記事にしました。
結論
結論から言うとテストの際、以下のようにcargo test
の後に引数を追加することで表示できます。
cargo test -- --nocapture
例
以下の、ごくシンプルなコードに対してテストを行ってみたいと思います。
fn add_two(n: i32) -> i32 { println!("execute {} + 2", n); n + 2 } #[cfg(test)] mod tests { use super::*; #[test] fn test_add_two() { assert_eq!(5, add_two(3)); } }
まずはcargo test
でテストを実行した場合、以下のようなテキストが出力されます。
running 1 test test tests::test_add_two ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
次にcargo test -- --nocapture
の場合、以下のようなテキストが出力されます。
running 1 test execute 3 + 2 test tests::test_add_two ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
2つの出力を比較すると、execute 3 + 2
の部分(=コードの中のprintln!
の内容)が追加されているのが分かります。
さいごに
- Rustのテストでprint出力をしたい時の方法を見ていきました
- テスト時、
cargo test -- --nocapture
とすることでprint内容が結果に出力されるようになります