Vb.net 如何强制特定的Visual Basic.NET单元测试连续运行
当将测试配置为并行运行时,例如使用ReSharper,似乎没有办法标记要串行运行的特定单元测试类 需要此功能的类的示例可以是在每次单独测试之前从数据库或文件结构中删除/重新创建数据的类Vb.net 如何强制特定的Visual Basic.NET单元测试连续运行,vb.net,unit-testing,resharper,Vb.net,Unit Testing,Resharper,当将测试配置为并行运行时,例如使用ReSharper,似乎没有办法标记要串行运行的特定单元测试类 需要此功能的类的示例可以是在每次单独测试之前从数据库或文件结构中删除/重新创建数据的类 如果并行测试运行开始,它们都可以在任何时候命中MyTestInitialize,VisualStudio 2010中的一个好方法似乎是创建一个具有一个共享对象的类,当调用MyTestInTILITE并调用MyTestCleapup时,它可以被锁定。 乙二醇 您可以使用VisualStudio的有序测试功能来定义单
如果并行测试运行开始,它们都可以在任何时候命中MyTestInitialize,VisualStudio 2010中的一个好方法似乎是创建一个具有一个共享对象的类,当调用MyTestInTILITE并调用MyTestCleapup时,它可以被锁定。 乙二醇
您可以使用VisualStudio的有序测试功能来定义单元测试需要运行的顺序 但是,请记住,每个单元测试都应该是隔离的,不应该依赖于前一个单元测试的结果 参考资料: 所以线程 MSDN文章
它们取决于初始化部分,这就是它的用途。然而,多个线程正在运行测试,并以不同的时间命中init部分,因为它们处理的是单个真实对象,在本例中是目录中的数据文件,所以所有的测试都会出错。测试也完全不依赖于之前单元测试的结果,它们依赖于访问全局资源,在本例中是一个文件。如果有一类没有依赖项的单元测试,使用模拟对象来验证交互,并有另一组测试来实际测试与对象(如数据库和文件)的集成和真实交互,这是非常好的。
' 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