我们有一个 NUnit 测试项目,大约有 1000 个测试。该项目包含主要针对自定义 WPF 控件的高级组件测试。我们的构建服务器(TeamCity)上的测试过程经常失败,原因如下:
InvalidOperationException “LocalDataStoreSlot 存储已被释放”
mscorlib.dll!System.LocalDataStore.GetData(System.LocalDataStoreSlot 插槽)
mscorlib.dll!System.Threading.Thread.GetData(System.LocalDataStoreSlot 插槽)
WindowsBase.dll!System.Windows.Interop.ComponentDispatcher.CurrentThreadData.get() ...
测试包含 [RequiresSTA] 属性、Window.Show()、Dispatcher 操作等......所以它绝对不是一个常规的单元测试项目。
失败看起来完全是随机的,我们修改了它以 80% 的几率发生,但大多数时候它根本不会发生。绝对神秘,有时生产代码中的简单更改(例如更改 xaml 代码中的样式)会触发故障,然后生产代码中的下一次更改会修复它。
这种特定的随机故障有时会让我们的开发团队非常沮丧,我们的扩展构建系统受到这种故障的严重阻碍。
我们很少能用 nunit-console.exe 在本地运行项目来重现它。
你们见过这样的测试过程失败吗?任何如何解决此问题的提示将不胜感激。
谢谢