我正在尝试增加 Rust 应用程序中的测试覆盖率。我已经阅读了很多有关测试公共函数和测试私有函数以及添加“tests”目录以添加集成测试的内容。但我还没有读过任何有关在实现中测试方法的内容。我尝试用谷歌搜索一下,但没有找到任何东西。
这是一个简单的例子,这是我实现测试的方式吗?
struct Rectangle {
width: usize,
length: usize,
}
impl Rectangle {
pub fn new(width: usize, length: usize) -> Rectangle {
Rectangle {
width,
length,
}
}
fn area(&mut self) -> usize {
self.width * self.length
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_rectangle() {
let mut rectangle = Rectangle::new(4, 5);
assert_eq!(20, rectangle.area())
}
}
Run Code Online (Sandbox Code Playgroud) 我正在 Ubuntu 20.04.2 LTS 64 位上开发我的 Rust 项目。我已将项目设置为针对主机架构进行编译(使用cargo build)并针对 ARM 64 位的目标架构进行交叉编译(使用cargo build --target=aarch64-unknown-linux-gnu)。到目前为止,该项目交叉编译良好。在目标硬件平台上,有应用程序将与之交互的串行端口,因此我已将串行端口板条箱添加到我的项目中。该项目对于 Ubuntu 主机架构仍然可以正常编译,但我无法再让它针对 aarch64 taget 进行交叉编译。
我已将目标添加到 rustup:
$ rustup target list
...
aarch64-fuchsia
aarch64-linux-android
aarch64-pc-windows-msvc
aarch64-unknown-linux-gnu (installed)
aarch64-unknown-linux-musl
aarch64-unknown-none
aarch64-unknown-none-softfloat
...
Run Code Online (Sandbox Code Playgroud)
我已经安装了 rustup 工具链:
$ rustup toolchain list
stable-aarch64-unknown-linux-gnu
stable-x86_64-unknown-linux-gnu (default)
Run Code Online (Sandbox Code Playgroud)
当我运行 Cargo build 命令时,cargo build --target=aarch64-unknown-linux-gnu我在编译过程中收到以下错误:
$ cargo build --target=aarch64-unknown-linux-gnu
Compiling libudev-sys v0.1.4
error: failed to run custom build command for `libudev-sys v0.1.4`
Caused by:
process didn't …Run Code Online (Sandbox Code Playgroud)