Rust 带锈的单元测试
我创建了一个具有目录结构的小型数学库 mathslib->Rust 带锈的单元测试,rust,Rust,我创建了一个具有目录结构的小型数学库 mathslib->src->lib.rs->转换/stats/trig/base 所有模块都声明为pub,函数也声明为pub 我只为一个函数编写了下面的测试,但是当我运行货物测试时,我遇到了一个无法解决该函数的错误(E0425) 从我在文档中看到的情况来看,这应该没问题,但显然不是 所讨论的函数如下所示 pub fn kelvin_to_celcius(k: f32) -> (bool, f32) { if k < 0f32 {
src
->lib.rs
->转换/stats/trig/base
所有模块都声明为pub
,函数也声明为pub
我只为一个函数编写了下面的测试,但是当我运行货物测试
时,我遇到了一个无法解决该函数的错误(E0425)
从我在文档中看到的情况来看,这应该没问题,但显然不是
所讨论的函数如下所示
pub fn kelvin_to_celcius(k: f32) -> (bool, f32)
{
if k < 0f32
{
return (false, k);
}
else
{
return (true, k - 273.15);
}
}
pub fn kelvin_to_celcius(k:f32)->(布尔,f32)
{
如果k<0f32
{
返回(假,k);
}
其他的
{
返回(正确,k-273.15);
}
}
您的函数不在范围内
假设您的模块布局如下所示:
pub fn kelvin_to_celcius(k: f32) -> (bool, f32)
{
if k < 0f32
{
return (false, k);
}
else
{
return (true, k - 273.15);
}
}
#[cfg(test)]
mod TemperatureTests {
...
}
#[cfg(test)]
mod TemperatureTests {
use super::*; // <--- use everything declared in the parent module
...
}
pub fn kelvin_to_celcius(k:f32)->(布尔,f32)
{
如果k<0f32
{
返回(假,k);
}
其他的
{
返回(正确,k-273.15);
}
}
#[cfg(测试)]
mod温度测试{
...
}
然后,您需要将该功能纳入测试模块的范围。这样做的惯用方法如下:
pub fn kelvin_to_celcius(k: f32) -> (bool, f32)
{
if k < 0f32
{
return (false, k);
}
else
{
return (true, k - 273.15);
}
}
#[cfg(test)]
mod TemperatureTests {
...
}
#[cfg(test)]
mod TemperatureTests {
use super::*; // <--- use everything declared in the parent module
...
}
#[cfg(测试)]
mod TemperatureTests{
使用super::*;//使用MathsLib::Conversions::Temperature;
将温度
符号添加到模块的作用域中,但它不会在温度
模块中添加任何符号。如果要这样做,您需要编写以下代码:
use MathsLib::Conversions::Temperature::*;
你能提供一个完整的例子,包括实际的错误信息吗?