首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`#[test]`是否意味着`#[cfg(test)]`?

`#[test]`是否意味着`#[cfg(test)]`?
EN

Stack Overflow用户
提问于 2019-05-05 18:24:39
回答 1查看 1.3K关注 0票数 12

按照惯例,Rust中的单元测试被赋予一个单独的模块,该模块是用#[cfg(test)]有条件编译的。

代码语言:javascript
复制
#[cfg(test)]
mod tests {
    #[test]
    fn test1() { ... }

    #[test]
    fn test2() { ... }
}

但是,我一直在使用一种测试更内联的样式:

代码语言:javascript
复制
pub fn func1() {...}

#[cfg(test)]
#[test]
fn test_func1() {...}

pub fn func2() {...}

#[cfg(test)]
#[test]
fn test_func2() {...}

我的问题是,#[test]是否意味着#[cfg(test)]?也就是说,如果我用#[test]标记我的测试函数,而不是用#[cfg(test)]标记,那么它们在非测试构建中仍然正确地缺失吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-05 19:47:56

我的问题是,#[test]是否意味着#[cfg(test)]?也就是说,如果我用#[test]标记我的测试函数,而不是用#[cfg(test)]标记,那么它们在非测试构建中仍然正确地缺失吗?

是。如果您没有使用单独的模块进行测试,那么就不需要使用#[cfg(test)]。标记为#[test]的函数已经被排除在非测试构建之外。这一点很容易得到证实:

代码语言:javascript
复制
#[test]
fn test() {}

fn main() {
    test(); // error[E0425]: cannot find function `test` in this scope
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55995061

复制
相关文章

相似问题

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