为了学习经验,我想开始一个新的 Rust 项目并逐步向上。到目前为止的主要困难是,每当我尝试将文件保留在某种结构中时,我都会遇到一些问题。
对于这个项目,文件结构是:
rwarden/
|- src/
| |- main.rs
| |- utils/
| |- secure.rs
|- tests/
| |- utils/
| |- secure_test.rs
|- Cargo.toml
cargo.toml内容可以在下面找到
[package]
name = "rwarden"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rust-crypto = "0.2.36"
# chatgpt suggestion, not working
#[[test]]
#name = "secure_test"
#path = "tests/utils/secure_test.rs"
secure.rs 文件包含一个计算给定字符串的 sha256 的函数,并且可以在下面找到 secure_test.rs 代码
//secure.rs
use crypto::digest::Digest;
use crypto::sha2::Sha256;
pub fn calculate_sha256_hash(input: &str) -> String {
let mut sha = Sha256::new();
sha.input_str(input);
sha.result_str()
}
//secure_test.rs
#[cfg(test)]
mod tests {
use rwarden::utils::secure::calculate_sha256_hash;
#[test]
fn test_calculate_sha256_hash() {
let input = "Hello, world!";
let expected_hash = "94ee059335e587e501cc4bf90613e081a6e1e7babc11c8cfae0c557a99a063ff".to_string();
let hash = calculate_sha256_hash(input);
assert_eq!(hash, expected_hash);
}
}
//main.rs
mod utils {
pub mod secure;
}
fn main() {
let input = "Hello, world!";
let hash = utils::secure::calculate_sha256_hash(input);
println!("Input: {}", input);
println!("SHA-256 hash: {}", hash);
}
这会导致在尝试运行测试时出现“使用未声明的板条箱或模块
rwarden
”错误。主要问题是如何使 calculate_sha256_hash
函数对测试可见?而且似乎这样每个新的测试都必须添加到 Cargo.toml 文件中,这似乎也不是最好的选择,还有其他方法吗?
您不能在二进制包上使用集成测试。您的选择是:
utils
模块公开。