2014-02-16 58 views
7

Specflow Steps的异步/等待支持=> 我想使用SpecFlow和C#的异步等待功能,windows phone 8, 使用MSTest的SpecFlow可以使用async/await执行代码,但不会等待结果。SpecFlow测试平台是否支持异步任务?

我已经更改了BindingInvoker.cs并升级到.NET 4,以支持异步任务,并且现在接收IOC未初始化错误。

https://github.com/robfe/SpecFlow/commit/507368327341e71b2f5e2a4a1b7757e0f4fb809d

+0

你如何编写测试? –

+0

删除了一个没有回答你的问题的答案,它的一般要点是你需要单元测试框架来支持'async'而不是SpecFlow – AlSki

回答

0

这里的问题是,如果我把在后台线程的东西,然后在测试执行模式下,主线程并不知道它,它只是跳转到下一段代码exectue和验证结果,但是直到该点值不在后台线程上更新。所以给出错误的断言。处理这个问题的方法是让主线等待/睡眠,直到后台工作结束。 实施例:

Dim caller As AsyncMethodHandler 
Dim result As IAsyncResult 
caller = New AsyncMethodHandler(AddressOf lcl_service.CreateSession) 
    result = caller.BeginInvoke(parameter, Nothing, AddressOf AsyncCallback, Nothing) 
     While Not result.IsCompleted 
      Thread.Sleep(1) 
     End While