Other Types of Tests
Integration Tests
If you want to test your library as a client, use an integration test.
Create a .rs file under tests/:
1. // tests/my_library.rs
2. use my_library::init;
4. #[test]
5. fn test_init() {
6. assert!(init().is_ok());
7. }
These tests only have access to the public API of your crate.
Documentation Tests
Rust has built-in support for documentation tests:
1. ```
#![allow(unused)]
```
2. ```
fn main() {
```
3. ```
/// Shortens a string to the given length.
```
4. ```
///
```
5. ```
/// ```
```
6. ```
/// # use playground::shorten_string;
```
7. ```
/// assert_eq!(shorten_string("Hello World", 5), "Hello");
```
8. ```
/// assert_eq!(shorten_string("Hello World", 20), "Hello World");
```
9. ```
/// ```
```
10. ```
pub fn shorten_string(s: &str, length: usize) -> &str {
```
11. ```
&s[..std::cmp::min(length, s.len())]
```
12. ```
}
```
13. ```
}
```
- Code blocks in
///comments are automatically seen as Rust code. - The code will be compiled and executed as part of
cargo test. - Adding
#in the code will hide it from the docs, but will still compile/run it. - Test the above code on the Rust Playground.
