#async-await #tokio #testing #better #macro #async-test #run-time

nightly macro tokio-async-await-test

一个用于改进async/await tokio测试的宏

1 个不稳定版本

0.1.0 2018年12月3日

#15#async-test

MIT/Apache

7KB

Tokio Async/Await Test

Build Status

这是一个简单的crate,它提供了一个类似于 #[test] 的过程宏,该宏将在tokio运行时中以单个future的形式运行测试。

用法

首先,您必须使用nightly rust,版本为 12-02-2018。将crate添加到您的 Cargo.toml

[dependencies]
tokio-async-await-test = { git = "https://github.com/LucioFranco/tokio-async-await-test" }

这将为您提供crate,但您还需要确保您也有 futures-previewtokio 作为依赖项,如下所示。

tokio = { version = "0.1", features = ["async-await-preview"] }
futures-preview = { version = "0.3.0-alpha.10", features = ["tokio-compat"] }

一旦您有了所有这些依赖项,您就可以像这样使用属性。

#![feature(pin, async_await, await_macro, futures_api)]

extern crate futures;
extern crate tokio;
extern crate tokio_async_await_test;

use tokio_async_await_test::async_test;

#[async_test]
async fn basic() {
    await!(example_async_fn());
}

这将启动一个tokio运行时,并阻塞在 basic 函数上。这通常展开成如下形式。其中 fut 是您正在运行的测试future。

#[test]
fn basic() {
	// -- snip --
    let mut rt = Runtime::new().unwrap();
	
	rt.block_on(fut().unit_error().boxed().compat()).unwrap();
}

您还可以通过导入 use tokio_async_await_test::async_current_thread_test; 使用当前线程运行时。

依赖项

~6MB
~109K SLoC