0

我正在.NET 中实现我自己的测试框架,并遇到了如何正确停止正在运行的测试执行的问题。正在执行的测试方法显然不合作,所以我不能使用 CancellationTokenSource 并且不推荐使用 Thread.Abort() 。像 NUnit 这样的现有测试框架如何处理这个问题?

4

1 回答 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 回答