如何选择不运行文档测试?

问题描述 投票:0回答:3

我正在编写一个 Rust 库,我想在我的文档中提供示例

  1. 编译作为运行的一部分
    cargo test
  2. 跑。

这可能吗?

我正在编写一个数据库客户端库,这些示例使用了一个假设的、不存在的数据库服务器。因此,这些示例在运行时总是会失败,但示例在语法上有效非常重要。因此我的要求如下。

如果无法做到我想要的,那么如何选择不让

cargo test
运行特定的文档测试?即,有
cargo run
编译并运行一些文档测试,但完全忽略其他一些?

rust rust-cargo
3个回答
73
投票

这记录在 The rustdoc 书,特别是关于属性的章节

您的起始代码块分隔符应如下所示:

/// ```no_run

摘自书中:

/// ```no_run
/// loop {
///     println!("Hello, world");
/// }
/// ```

no_run
属性将编译您的代码,但不会运行它。这是 对于诸如“以下是如何检索网页”之类的示例很重要, 您希望确保编译,但可能会在测试中运行 没有网络访问的环境。

要完全省略构建,请使用

ignore
而不是
no_run


53
投票

将其放入 Cargo.toml 中:

[lib]
doctest = false

在这里找到它:https://doc.rust-lang.org/cargo/commands/cargo-test.html


0
投票

可以使用

should_panic
来解决,与使用
no_run
几乎相同。只要编译成功,无论结果如何,
no_run
都会被标记为成功,并且
should_panic
一定会panic。但是,两者都必须编译成功。对于提问者来说,
no_run
似乎更合适,但我把这个答案留给其他读者。

© www.soinside.com 2019 - 2024. All rights reserved.