Throwin std :: exception导致VS 2013单元测试模块崩溃

时间:2015-07-18 18:51:30

标签: c++ unit-testing testing visual-studio-2013 windows-7

我在Visual Studio 2013中为我的C ++应用程序创建了单元测试项目。不幸的是,它在测试期间没有正确处理异常:如果我运行测试只是执行以下操作:

throw std::runtime_exception("hello!");

我看到Windows“应用程序已停止工作”框告诉我vstest.executionengine.exe已崩溃。同时,visual studio中的测试资源管理器表明此测试已经过去没有错误。

Visual Studio本身报告“活动测试”已中止,错误是意外的。参考https://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx,但该页面上关于我的问题绝对没有有用的信息。

如何在C ++中正确终止测试执行?

1 个答案:

答案 0 :(得分:0)

<强>解决方案

  • 确保您的所有测试都可以同时运行,因为单元测试在VS2013中的运行方式(我全意运行)
  • 确保您没有断言(..)电话,使用标题Assert提供的CppUnitTestAssert.h课程
  • 尝试从测试代码中删除I / O,例如,尝试使用标头Logger提供的CppUnitTestLogger.h类,而不是您自己的实现
  • 使用命令 TESTS&gt;调试&gt;调试所有测试以在调试模式下运行所有​​测试,您将 definetely 找到崩溃的原因。

More information

崩溃原因

我认为断言是如何在我的代码中起作用的,也许是abort()。这导致托管过程出现意外情况。