繁体   English   中英

Visual Studio 2015中的测试执行错误(2013年工作)

[英]Test execution error in Visual Studio 2015 (worked in 2013)

我们正在从Visual Studio 2013 Update 5升级到Visual Studio 2015 Update 1的过程中。

我们的解决方案有很多测试,我们使用NUnit 2.6.4以及用于NUnit 2.x的NUnit测试适配器。

在Visual Studio 2013中运行这些测试时,它们都运行良好。

但是,在Visual Studio 2015中运行时,先运行前200个奇数测试,然后执行停止。 然后,我可以选择尚未运行的测试并成功执行这些测试。 我在VS2013和VS2015中都安装了最新的ReSharper,它愉快地执行了所有测试。

自从黎明以来,我们就一直保留每个版本的测试覆盖率详细信息,并且从Visual Studio的测试运行器中可以看到我所覆盖的块数。 但是ReSharper向我们显示了所涵盖的语句数量。 值略有不同,但它们会使我们的图表混乱。

当测试执行失败时,它会创建一个转储文件(它还会创建一些XML文件,这些文件似乎只是显示我已安装的DLL)。 我可以打开它并对其进行“调试”,但是它只是向我显示了一行失败的代码,并且调用堆栈仅显示了“托管代码”,这意味着我无法确定导致该问题的实际测试。

这在VS2013和在VS2015中运行的ReSharper中完美运行的事实表明“这不是我们的错”,但是尽管我想这样想,但这无济于事。

有任何想法吗?

谢谢

格里夫

找出问题所在。 我们的解决方案中有一个实现IDispose的类,而我们的单元测试之一没有处理该类,只是允许它超出范围。

因此,由于尚未处理Disposable对象,因此未抑制类的Finalizer。 因此,GC调用了终结器,该终结器又试图访问也超出范围的另一个对象,从而导致使测试执行运行程序崩溃的异常。

有趣的是,运行NUnit 2.x的VS2015崩溃了,但是VS2013中的相同设置可以很好地应对。

顺便说一句,调试DUMP文件时(见上文),我意识到调用堆栈是无关紧要的,我只需要在终结器中放入一些防御性代码即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM