#[test]
Expand description
Marks async function to be executed by runtime, suitable to test environment.
§Borrowing the runtime
To borrow the runtime directly, add as a function argument
#[async_local::test(flavor = "multi_thread", worker_threads = 10)]
fn test(runtime: &tokio::runtime::Runtime) {
runtime.block_on(async {
assert!(true);
});
}
§Multi-threaded runtime
To use the multi-threaded runtime, the macro can be configured using
#[async_local::test(flavor = "multi_thread", worker_threads = 1)]
async fn my_test() {
assert!(true);
}
The worker_threads
option configures the number of worker threads, and
defaults to the number of cpus on the system.
Note: The multi-threaded runtime requires the rt-multi-thread
feature
flag.
§Current thread runtime
The default test runtime is single-threaded. Each test gets a separate current-thread runtime.
#[async_local::test]
async fn my_test() {
assert!(true);
}
§Usage
§Using the multi-thread runtime
#[async_local::test(flavor = "multi_thread")]
async fn my_test() {
assert!(true);
}
§Using current thread runtime
#[async_local::test]
async fn my_test() {
assert!(true);
}
§Set number of worker threads
#[async_local::test(flavor = "multi_thread", worker_threads = 2)]
async fn my_test() {
assert!(true);
}
§Configure the runtime to start with time paused
#[async_local::test(start_paused = true)]
async fn my_test() {
assert!(true);
}
Note that start_paused
requires the test-util
feature to be enabled on `tokio``.