2014-02-16 60 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