如何强制特定的Visual Basic .NET单元测试以串行方式运行

时间:2013-05-02 23:29:23

标签: vb.net unit-testing resharper

当配置测试并行运行时,例如使用ReSharper,似乎没有办法标记要串行运行的特定单元测试类。

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

参考文献: