Rust's built-in test framework is simple and powerful. Mark functions with #[test], and cargo test runs them. Use assert!, assert_eq!, and assert_ne! for assertions. Tests live alongside code in the same file, typically in a #[cfg(test)] mod tests block. This keeps tests close to the implementation, making refactoring easier. For panics, use #[should_panic]. For async tests with tokio, use #[tokio::test]. The test runner captures stdout by default and shows it only on failure. You can filter tests by name, run them in parallel or serial, and generate coverage reports. I write unit tests for all public APIs and edge cases. The fast feedback loop encourages test-driven development.