在 Rust 中,使用 WebAssembly (WASM) 进行单元测试需要借助一些工具和库。以下是一些建议的步骤:
- 添加依赖项
首先,在您的 Cargo.toml
文件中添加以下依赖项:
[package] name = "your_project_name" version = "0.1.0" authors = ["Your Name"] edition = "2018" [lib] crate-type = ["cdylib"] [dependencies] wasm-bindgen = "0.2" wasm-pack = "0.3" test = "1.0"
这里我们添加了 wasm-bindgen
和 wasm-pack
用于与 WebAssembly 进行交互,以及 test
库用于编写单元测试。
- 编写 Rust 代码
在您的 Rust 项目中,编写一个简单的函数,例如 add
,并将其导出为 WebAssembly 函数:
// src/lib.rs #[wasm_bindgen] pub fn add(a: i32, b: i32) -> i32 { a + b }
- 编写单元测试
在 src
目录下创建一个名为 tests
的文件夹,并在其中创建一个名为 lib.rs
的文件。这将作为您的单元测试文件。
// tests/lib.rs use super::*; #[cfg(test)] mod tests { use wasm_bindgen_test::*; #[wasm_bindgen_test] fn test_add() { assert_eq!(add(1, 2), 3); assert_eq!(add(-1, 1), 0); assert_eq!(add(0, 0), 0); } }
这里我们使用了 wasm_bindgen_test
库来编写 WebAssembly 的单元测试。请注意,我们在 #[cfg(test)]
属性下编写了测试代码,以便在构建时仅运行测试。
- 构建和运行测试
在项目根目录下运行以下命令,以构建 WebAssembly 二进制文件和测试:
wasm-pack build --target web
这将生成一个名为 pkg
的文件夹,其中包含 WebAssembly 二进制文件和测试代码。接下来,使用一个支持 WebAssembly 的 JavaScript 测试运行器(如 wasm-test
)来运行测试。例如,您可以使用 wasm-test
的 Node.js 版本:
npm install -g wasm-test wasm-test tests/pkg/your_project_name.js
这将运行您在 tests/lib.rs
中编写的单元测试,并输出测试结果。