在将测试配置为并行运行时,例如使用 ReSharper,似乎无法将特定的单元测试类标记为串行运行。
需要这样做的类的一个示例可能是在每次单独测试之前删除/重新创建数据(从数据库或只是文件结构)。
如果并行测试运行开始,它们都可以在任何时候点击 MyTestInitialize(),这会导致其他处于断言各种条件的测试的混乱。
在将测试配置为并行运行时,例如使用 ReSharper,似乎无法将特定的单元测试类标记为串行运行。
需要这样做的类的一个示例可能是在每次单独测试之前删除/重新创建数据(从数据库或只是文件结构)。
如果并行测试运行开始,它们都可以在任何时候点击 MyTestInitialize(),这会导致其他处于断言各种条件的测试的混乱。
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