测试框架如何停止执行运行测试?

时间:2016-03-03 08:27:42

标签: c# .net nunit task test-framework

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

1 个答案:

答案 0 :(得分:1)

在快速浏览源代码后,似乎Thread.Abort()是首选机制。这是有道理的,因为跑步者需要执行任意代码然后立即杀死它。

查看NUnit的源(v3),当指定超时值时,它会强制执行测试onto a separate thread。然后,如果测试超过其超时值,则通过调用is killed Thread.Abort()进行测试。

对于MbUnit(v3),它在separate thread using a sandbox上运行测试,创建System.Threading.Timer。当该计时器到期时,它会调用Abort() on the sandbox,在正在运行的测试中调用Thread.Abort()

另外,according to Reference Source我没有看到Thread.Abort()被标记为过时/弃用。