我在我的代码中注意到,创建了一个从未正确清理过的新thread
的类。该段代码的单元测试成功,但在控制台上有一个warning
表示已发生System.AppDomainUnloadedException
。可以使用以下代码段重现此内容
[TestMethod]
public void StartNewThread_ThreadNotStopped_StillSucceeds()
{
var thread = new Thread(DoNothingForEver);
thread.Start();
}
private void DoNothingForEver()
{
while (true){/* do nothing */}
}
在开发此类单元测试时,开发人员有责任确保不会发生此类异常,但在工作中我发现这种情况经常发生。更糟糕的是,我亲眼目睹了当重构成功单元测试的代码时,单元测试仍然会成功,但会引发一个未被注意的exception
。在深入研究这个问题时,很明显重构的代码没有正常工作,因此,单元测试几乎没有附加价值。
有什么方法可以检测我的测试项目,以致MsTest
在这种情况下失败?