如何退出运行文档测试?

63
我正在编写一个Rust库,并希望在我的文档中提供示例:
  1. 作为 cargo test运行的一部分进行编译
  2. 不 运行。
这是否可行?
我正在编写一个数据库客户端库,示例使用假想的、不存在的数据库服务器。因此,当运行时,这些示例总是失败的,但重要的是示例在语法上是有效的。因此,我有以上的要求。
如果没有实现我想要的功能,那么如何退出特定doc测试的运行?即,让编译和运行某些doc测试,但完全忽略其他测试?
2个回答

70

这在Rustdoc书中有详细记录,特别是有关属性章节的部分。

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


```rust
/// ```no_run
从这本书中:
/// ```no_run
/// loop {
///     println!("Hello, world");
/// }
/// ```

no_run 属性会编译你的代码但不会运行它。这对于例如“这里是如何检索网页”的示例非常重要,你希望确保它可以编译,但可能在没有网络访问权限的测试环境中运行。

如果要完全省略构建,请使用 ignore 而不是 no_run


5
我认为在 Rust 的更新版本中 no_run 不再适用,但是这本书似乎没有明确说明替换它的是什么。 - snim2
2
来自2022年,截至本评论发布日期,no_run在最新的稳定版Rust + Cargo上完美运行(当我运行测试时,我得到了“通过”的消息)。 - Kobato

51

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接