cargo test 输出print
时间: 2023-07-22 20:40:09 浏览: 166
如果您想在运行 `cargo test` 命令时输出 `print` 语句,可以使用 Rust 的测试宏 `println!`。例如,在测试函数中添加以下代码将输出一个字符串:
```rust
#[test]
fn my_test() {
println!("This is a test print statement.");
assert_eq!(1 + 1, 2);
}
```
当您运行 `cargo test` 命令时,您将在终端中看到测试输出和 `println!` 语句的输出。请注意,测试输出将始终在 `println!` 输出之前显示。
相关问题
cargo test 输出不了println!为什么
在默认情况下,`println!` 语句在 `cargo test` 中是无法输出的。这是因为测试运行在一个单独的线程中,而 `println!` 语句的输出通常是缓冲的。因此,当测试运行完成时,缓冲区中的输出将被清空,而您在测试中输出的任何信息都会被丢弃。
要解决这个问题,您可以在运行测试时设置环境变量 `RUST_TEST_THREADS`,并将其值设置为 `1`。这将强制测试在单个线程中运行,从而允许 `println!` 语句输出到终端中。例如,您可以使用以下命令来运行测试:
```bash
RUST_TEST_THREADS=1 cargo test
```
如果您使用的是 Rust 2018 或更新版本,您还可以使用 `cargo test -- --test-threads=1` 命令来达到同样的效果。
请注意,将测试强制为单线程可能会导致测试运行时间变长,因为测试无法并行运行。此外,如果您在测试中使用了多线程编程,强制测试单线程运行可能会导致测试失败。
cargo test 怎么输出println!的信息
要在 `cargo test` 命令中输出 `println!` 语句的信息,您可以将测试的标准输出(stdout)重定向到终端。您可以使用 `cargo test -- --nocapture` 命令来禁用默认的测试输出捕获,并将测试的标准输出打印到终端上。
例如,以下是一个简单的测试文件 `tests/my_test.rs`,其中包含一个 `println!` 语句:
```rust
#[test]
fn my_test() {
println!("This is a test print statement.");
assert_eq!(1 + 1, 2);
}
```
您可以使用以下命令来运行测试并输出 `println!` 语句的信息:
```bash
cargo test -- --nocapture
```
这将在终端中输出以下内容:
```
running 1 test
test my_test ... ok
This is a test print statement.
```
请注意,`--nocapture` 标志将禁用所有测试输出捕获,包括标准输出和标准错误输出。如果您只想捕获标准输出但不想捕获标准错误输出,您可以使用 `--nocapture=stdout` 标志。