Rust Testing
Running cargo test builds and runs all test binaries, only really caring about their exit code (e.g raised an error or not).
Test binaries are created from a package's [lib] and for each .rs file in tests/*.
To create a test all we have to do is annotate it with #[test].
#[test]
fn a_test() {
assert_eq!(0, 0);
}
We can add setup code to our tests by annotating a module:
#[cfg(test)]
mod tests {
fn setup_game() {
// ...
}
#[test]
fn movement_system_test() {
// ...
}
}
The compiler will only compile the code annotated with #[cfg(test)] when we run cargo test, not cargo run or cargo build.
#[cfg(...)] allows the compiler to conditionally compile code based on specific conditions. We should read it like "If this configuration exists, include this code".
With it we can target operating systems #[cfg(target_os = "android")] or specific features #[cfg(feature = "server")] or only in debug mode #[cfg(debug_assertions)]