Wor*_*red 22 c# xunit.net async-await
确切的情况是我正在使用Protractor.NET(AngularJS的Protractor E2E框架的.NET端口)进行E2E测试,我想做一些Web请求(以及API System.Net.Http.HttpClient- 有所有异步/ Task方法)来安排我的在Act/Assert之前进行测试,只有我需要做同样的安排进行多次测试.
我正在使用xUnit.net作为我的测试运行器,他们使用一个接口(IUseFixture<T>)来获得每个夹具的设置代码.如果有IAsyncUseFixture<T>一个Task SetFixtureAsync(T t);或那个东西会很好.我不认为这样的事情存在.另外,我不认为构造函数可以使用它们await,构造函数是在xUnit.net中执行相同代码块的唯一方法.
我有什么选择? .Result?是不是那种不好的做法(死锁)?
Wil*_*lka 53
xUnit有一个IAsyncLifetimeasync setup/teardown接口.您需要实现的方法是Task InitializeAsync()和Task DisposeAsync().
InitializeAsync 在创建类之后立即调用它,然后再使用它.
DisposeAsyncIDisposable.Dispose如果类也实现的话,就在之前调用IDisposable.
例如
public class MyTestFixture : IAsyncLifetime
{
private string someState;
public async Task InitializeAsync()
{
await Task.Run(() => someState = "Hello");
}
public Task DisposeAsync()
{
return Task.CompletedTask;
}
[Fact]
public void TestFoo()
{
Assert.Equal("Hello", someState);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5644 次 |
| 最近记录: |