【发布时间】:2014-10-23 12:40:34
【问题描述】:
我们有一个包含 1000 个左右的测试的 NUnit 测试项目。该项目包含主要针对自定义 WPF 控件的高级组件测试。我们的构建服务器 (TeamCity) 上的测试过程经常失败:
InvalidOperationException "LocalDataStoreSlot 存储已被释放"
mscorlib.dll!System.LocalDataStore.GetData(System.LocalDataStoreSlot slot)
mscorlib.dll!System.Threading.Thread.GetData(System.LocalDataStoreSlot slot)
WindowsBase.dll!System.Windows.Interop.ComponentDispatcher.CurrentThreadData.get() ...
测试包含 [RequiresSTA] 属性、Window.Show()、Dispatcher 操作等...所以它绝对不是一个常规的单元测试项目。
失败看起来完全是随机的,我们修改了它以 80% 的几率发生,但大多数时候它根本不会发生。绝对神秘,有时生产代码中的简单更改(例如更改 xaml 代码中的样式)会触发故障,然后生产代码中的下一次更改修复它。
这种特定的随机故障有时让我们的开发团队非常沮丧,我们的扩展构建系统受到这种故障的严重阻碍。
我们很少能用 nunit-console.exe 在本地运行项目来重现它。
你们见过这样的测试过程失败吗?任何如何解决此问题的提示将不胜感激。
谢谢
【问题讨论】:
-
我们在构建服务器上遇到了同样的问题,但使用的是 Jenkins。几乎从未在开发机器上本地看到过。我们还对不是真正单元测试的 WPF 内容进行了大量测试。有一段时间的理论是这个问题出现在未终止的调度程序做奇怪的事情,但现在我们似乎有它,即使正确地杀死任何已启动的调度程序。你设法解决了这个问题吗?有什么更新吗?
-
我们仍在努力解决这个问题。还没有解决方案。
标签: wpf nunit dispatcher nunit-console