1

在将测试配置为并行运行时,例如使用 ReSharper,似乎无法将特定的单元测试类标记为串行运行。

需要这样做的类的一个示例可能是在每次单独测试之前删除/重新创建数据(从数据库或只是文件结构)。

如果并行测试运行开始,它们都可以在任何时候点击 MyTestInitialize(),这会导致其他处于断言各种条件的测试的混乱。

4

2 回答 2

0

Visual Studio 2010 中的一个好方法似乎是创建一个具有单个共享对象的类,然后可以在调用 MyTestIntialize() 时锁定该对象,并在调用 MyTestCleapup() 时解锁该对象。

例如

' Prevent resharper running tests in parallel
Public Class SingleProcess
    Public Shared Lock As New Object
End Class
'.....
<TestClass()> _
Public Class MyTestClass

    <TestInitialize()> _
    Public Sub MyTestInitialize()
        Threading.Monitor.Enter(SingleProcess.Lock)
        ' Do initialize stuff
    End Sub
    '
    <TestCleanup()> _
    Public Sub MyTestCleanup()
        ' Release lock
        Threading.Monitor.Exit(SingleProcess.Lock)
    End Sub
于 2013-05-02T23:29:23.397 回答
0

您可以使用 Visual Studio 的Ordered Tests功能来定义单元测试需要运行的顺序。

但是,请记住,每个单元测试都应该是独立的,不应依赖于前一个单元测试的结果。

参考:

于 2013-05-03T06:42:32.360 回答