I have a number of methods in a mod
. These methods need to be tested but they're private. I currently have the unit tests inside the same mod
, but I'm not sure this is the right way to go about it, as I'm mixing two different things.
Should I put my unit tests in a different file? If so, how do I test private methods?
It's recommended to place tests in their own module. This module should be a child of the module whose code you want to test (and it can be defined in the same or different file).
#[cfg(test)]
mod tests {
#[test]
fn test_some_stuff() {
// ... test code ...
}
}
Private methods are not private to child modules, but you still need to import them with use super::some_name;
.
By the way, this is all explained in the test organization section (11.3) of the Rust Book.