还原多个数据库时,测试中止,但没有引发错误?



所以我有一个测试框架,它正在恢复两个数据库,既有TestInitialisation方法,也有TestCleanup方法。

当它以Parallel.ForEach模式运行时,我收到线程正在中止错误,没有其他错误,因此我认为SQL Server的某些内容会引发错误,然后一个接一个地进行还原。

第一次还原工作正常,第二次在创建连接字符串的过程中现在出现线程中止错误,但我进一步查看,TestCleanup中间运行另一个线程,因此 MSTest 通过中止主线程并调用 Cleanup 提前关闭我的测试而不会引发错误。

如果主测试线程正在执行其他操作,则可能导致此问题的原因是什么?如果我让它运行,我得到的错误是:

线程正在中止

编辑:所以这似乎与 TestTimeout 属性有关,但它并没有告诉我它超时了,它只是中止所有线程并导致主线程抛出错误?

好吧,我觉得有点愚蠢,我想这就是当您继承一盘意大利面并在调试过程结束之前询问 SO 时会发生什么。

TestCleanup当前正在还原的数据库上调用一些 SQL,因此那里引发的错误将优先于超时错误。

我将与作者就将SQL添加到TestCleanup进行严厉的交谈。

最新更新