我正在.NET 中实现我自己的测试框架,并遇到了如何正确停止正在运行的测试执行的问题。正在执行的测试方法显然不合作,所以我不能使用 CancellationTokenSource 并且不推荐使用 Thread.Abort() 。像 NUnit 这样的现有测试框架如何处理这个问题?
问问题
530 次
1 回答
1
快速浏览源代码后,似乎这Thread.Abort()
是首选机制。乍一看,这是有道理的,因为运行程序需要执行任意代码然后立即终止它。
查看 NUnit 的源代码 (v3),当指定超时值时,它会强制测试到单独的线程上。然后,如果测试超过了它的超时值,它会通过调用Thread.Abort()
.
与 MbUnit (v3) 类似,它使用创建System.Threading.Timer
. 当该计时器到期时,它会Abort()
在 sandbox上调用,它会Thread.Abort()
在正在运行的测试上调用。
此外,根据参考来源,我没有看到Thread.Abort()
标记为过时/弃用。
于 2016-03-03T13:43:57.187 回答