首页 > 解决方案 > MS Native 单元测试 - 来自线程的 Assert::Fail 不起作用

问题描述

示例代码:

TEST_CLASS(MyTests)
{    
    TEST_METHOD(MT_Test)
    {
          std::thread t([]() 
          {              
             Assert::Fail(L"Failure!");
          });

          t.join();
     }    
};

MT_Test运行/调试时,它从不说由于测试断言失败而导致测试失败。不同运行或不同 VS 版本(2017/2019)上的不同行为:

但不是一次,测试失败就发生了。

如何从线程传播/呈现这种失败?

标签: c++visual-studiounit-testingvisual-c++mstest

解决方案


根据CppUnitTestFramework: Testrunner 因线程中的 Assert 语句而崩溃

让我直截了当地说:该框架不是为检查线程中的测试条件(断言)而设计的吗?

不幸的是,C++ 测试框架假定 Asserts 抛出的异常将在同一个线程上。


推荐阅读