## Writing Rust unit tests with async-std

I have been writing a lot of Rust lately and as a consequence I have had to get a lot better at writing unit tests. As if testing along weren’t tricky enough, almost everything I am writing takes advantage of async/await and is running on top of the async-std runtime.

Testing async functions with async-std is actually so easy it’s no wonder nothing showed up in my first search engine queries! Rather than using #[test] use the #[async_std::test] notation and convert the test function to an async function, for example:

async fn simple_method() -> boolean {
true
}

#[cfg(test)]
mod tests {
use super::*;

#[async_std::test]
async fn test_simple_case() {
let result = simple_method().await;
assert!(result);
}
}


That was easy™

Another option which also worked out just fine was to utilize smol as in dev-dependencies to run something like:

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn test_simple_case() {
let result = smol::run(simple_method());
assert!(result);
}
}