【问题标题】:Throwin std::exception causes VS 2013 unit testing module crash抛出 std::exception 导致 VS 2013 单元测试模块崩溃
【发布时间】:2015-10-08 06:35:23
【问题描述】:

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

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

我看到 Windows“应用程序已停止工作”框告诉我 vstest.executionengine.exe 已崩溃。同时,Visual Studio 中的Test Explorer 显示该测试已通过且没有错误。

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

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

【问题讨论】:

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


【解决方案1】:

解决方案

  • 确保您的所有测试都可以同时运行,因为这就是单元测试在 VS2013 中的工作方式(我的意思是全部运行)
  • 确保您没有 assert(..) 调用,使用由标头 CppUnitTestAssert.h 提供的 Assert
  • 尝试从测试代码中删除 I/O,例如,尝试使用标头 CppUnitTestLogger.h 提供的 Logger 类而不是您自己的实现
  • 使用命令 TESTS > Debug > Debug all tests 在调试模式下运行所有​​测试,您将明确找到崩溃的原因。

More information

崩溃原因

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 2011-02-26
    • 2012-03-06
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多