0
我對單元測試比較陌生,並且在我的個人項目上嘗試它。我想單元測試一些併發方法(在線程池中運行動作的期貨)。爲避免在線程集中操作之前完成測試方法,我正在阻止測試。下面是實際的阻塞代碼:如何讓視覺工作室不要等待暫時阻止的測試?
Private Shared Function BlockOnFuture(ByVal future As IFuture,
ByVal timeout As TimeSpan) As Boolean
Dim waitHandle = New System.Threading.ManualResetEvent(initialState:=False)
AddHandler future.Ready, Sub() waitHandle.Set()
If future.State <> FutureState.Unknown Then waitHandle.Set() 'already ready'
Return waitHandle.WaitOne(timeout)
End Function
Private Shared Function BlockOnFuture(ByVal future As IFuture) As Boolean
Return BlockOnFuture(future, New TimeSpan(0, 0, seconds:=5))
End Function
我有特意不設定未來的測試,例如:
<TestMethod()>
Public Sub CallWhenReady_Dangle()
Dim flag = True
Dim future = New FutureAction() 'A class which has methods to make it become ready'
Dim result = future.CallWhenReady(Sub(exception)
flag = False
End Sub)
'should fail, because the future action is not being set'
Assert.IsFalse(BlockOnFuture(result))
'future was not set so the action did not run'
Assert.IsTrue(flag)
'action did not run so the result should not be set either'
Assert.IsTrue(result.State = FutureState.Unknown)
End Sub
我認爲Visual Studio中運行測試一個接一個,因爲每一個測試當這一個需要5秒超時並完成時耐心等待。有沒有一種方法可以強制某些測試同時運行?我接近這個錯誤嗎?
殘樁如何幫助?在這個測試中,「輸入」的未來幾乎沒有任何意義,我檢查從該方法返回的未來也沒有做任何事情。另外,我將超時設置爲測試的一部分。它不是MSTest的一部分。 – 2009-10-02 00:09:50