按照惯例,Rust中的单元测试有一个单独的模块,该模块有条件地用#[cfg(test)]以下代码编译:
#[cfg(test)]
mod tests {
#[test]
fn test1() { ... }
#[test]
fn test2() { ... }
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直在使用一种更内联测试的样式:
pub fn func1() {...}
#[cfg(test)]
#[test]
fn test_func1() {...}
pub fn func2() {...}
#[cfg(test)]
#[test]
fn test_func2() {...}
Run Code Online (Sandbox Code Playgroud)
我的问题是,#[test]暗示#[cfg(test)]吗?也就是说,如果我用#[test]而不是标记我的测试功能#[cfg(test)],那么在非测试版本中它们是否仍然正确存在?
我希望能够在我的代码本身内检查它是否在测试中运行.这样做是理想的,例如,与测试数据库,Web服务等接口.简单bool就足够了.
Rust有一个现有的API吗?