使用TransactionSccope测试Awaitable函数会导致超时

时间:2013-04-30 18:23:14

标签: vb.net entity-framework async-await transactionscope vs-unit-testing-framework

编辑: 这个问题已经讨论过,似乎已经解决here

我目前正在为DbContext编写单元测试。为了在每次测试后将数据库(LocalDb)恢复到以前的状态,我使用以下方法:

  Private _transactionScope As TransactionScope

<TestInitialize>
    Public Sub Initialize()
        _transactionScope = New TransactionScope(TransactionScopeOption.Required)
    End Sub

    <TestCleanup>
    Public Sub TearDown()
        _transactionScope.Dispose()
    End Sub

这很好用。然而。我现在创建了数据库操作的异步变体。一个例子:

Public Function AddMemberAsync(member as MemberEntity) As Task
   Return Task.Run(Sub()
                    AddMember(member)
                   End Sub)
End Function

单元测试现在显示:

<TestMethod>
Public Async Function TestAdd() As Task
    Await _myDb.AddMemberAsync(someMember)
End Function

此设置导致测试失败,因为TransactionScopes超时。 当我使用其他方法恢复数据库时,测试工作正常。 发生了什么事?

0 个答案:

没有答案