首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么不打印!在Rust单元测试中工作?

为什么不打印!在Rust单元测试中工作?
EN

Stack Overflow用户
提问于 2014-08-04 00:10:51
回答 5查看 83.1K关注 0票数 419

我已经实现了以下方法和单元测试:

代码语言:javascript
复制
use std::fs::File;
use std::path::Path;
use std::io::prelude::*;

fn read_file(path: &Path) {
    let mut file = File::open(path).unwrap();
    let mut contents = String::new();
    file.read_to_string(&mut contents).unwrap();
    println!("{}", contents);
}

#[test]
fn test_read_file() {
    let path = &Path::new("/etc/hosts");
    println!("{:?}", path);
    read_file(path);
}

我这样运行单元测试:

代码语言:javascript
复制
rustc --test app.rs; ./app

我也可以用下面的命令来运行

代码语言:javascript
复制
cargo test

我收到一条消息,说测试通过了,但是println!从来没有显示在屏幕上。为什么不行?

EN

回答 5

Stack Overflow用户

发布于 2015-04-13 10:14:26

TL;DR

代码语言:javascript
复制
$ cargo test -- --nocapture

使用以下代码:

代码语言:javascript
复制
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum PieceShape {
    King, Queen, Rook, Bishop, Knight, Pawn
}

fn main() {
    println!("Hello, world!");
}

#[test]
fn demo_debug_format() {
    let q = PieceShape::Queen;
    let p = PieceShape::Pawn;
    let k = PieceShape::King;
    println!("q={:?} p={:?} k={:?}", q, p, k);
}

然后运行以下命令:

代码语言:javascript
复制
 $ cargo test -- --nocapture

你应该看到

代码语言:javascript
复制
Running target/debug/chess-5d475d8baa0176e4

running 1 test
q=Queen p=Pawn k=King
test demo_debug_format ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
票数 113
EN

Stack Overflow用户

发布于 2020-09-26 04:36:23

作为mentioned by L. F.--show-output是一条必由之路。

代码语言:javascript
复制
$ cargo test -- --show-output

其他显示标志为mentioned in the documentation of cargo test in display-options

票数 27
EN

Stack Overflow用户

发布于 2016-11-02 13:15:22

要在println!()中包含打印输出并保留测试结果的颜色,请在cargo test中使用colornocapture标志。

代码语言:javascript
复制
$ cargo test -- --color always --nocapture

(货运版:每晚0.13.0 )

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25106554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档