我们有一个NUnit测试项目,大约有1000个测试。该项目包含主要用于自定义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在本地运行项目来重现它。
你们有没有见过这样的测试过程失败?任何有关如何解决此问题的提示都将受到高度赞赏。
由于
答案 0 :(得分:1)
我们在环境中遇到了完全相同的问题(Jenkins,Windows 8,NUnit 2.6.3)。
这些措施为我们解决了这个问题。
/nothread
解决关闭时NUnit崩溃的问题。如果您正在使用MS Build Community Tasks,则需要将TestInNewThread
任务的NUnit
属性设置为false
。有关崩溃性质的一些背景信息可以在MSDN forum thread中找到。最终需要在NUnit中修复。