Как заставить Visual Studio не ждать на временно заблокированных тестах? - PullRequest
0 голосов
/ 02 октября 2009

Я относительно новичок в модульном тестировании и пробую его в своих личных проектах. Я хочу провести модульное тестирование некоторых параллельных методов (фьючерсы, которые запускают действия в пуле потоков). Чтобы избежать завершения метода тестирования до объединения потоков, я блокирую тест. Вот фактический код блокировки:

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 секунд для тайм-аута и завершения. Есть ли способ заставить некоторые тесты запускаться одновременно? Я подхожу к этому неправильно?

1 Ответ

0 голосов
/ 02 октября 2009

Это был долгий день, но я думаю, что мой совет - неправильный подход. На самом деле вы хотите заглушить будущее поведение.

Kluge будет изменять время ожидания теста по умолчанию. Я думаю, вы можете сделать это с помощью атрибута (большинство тестовых Fx позволяют вам это делать, но я не могу вспомнить синтаксис для MSTest, который, по-видимому, соответствует используемому вами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...