Unit tests should live in a tests
submodule at the bottom of the module they
test. Mark the tests
submodule with #[cfg(test)]
so it is only compiled when
testing.
The tests
module should contain:
#[test]
striving for full coverage of the parent module's
definitions.For example:
fn main() { // Excerpt from std::str #[cfg(test)] mod tests { #[test] fn test_eq() { assert!((eq(&"".to_owned(), &"".to_owned()))); assert!((eq(&"foo".to_owned(), &"foo".to_owned()))); assert!((!eq(&"foo".to_owned(), &"bar".to_owned()))); } } }// Excerpt from std::str #[cfg(test)] mod tests { #[test] fn test_eq() { assert!((eq(&"".to_owned(), &"".to_owned()))); assert!((eq(&"foo".to_owned(), &"foo".to_owned()))); assert!((!eq(&"foo".to_owned(), &"bar".to_owned()))); } }
[FIXME] add details about useful macros for testing, e.g.
assert!