c++ - 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)上的不同行为:
- 测试成功(绿色勾号)
- 测试变得不确定(蓝色感叹号)
- MS 测试引擎崩溃
但不是一次,测试失败就发生了。
如何从线程传播/呈现这种失败?
解决方案
根据CppUnitTestFramework: Testrunner 因线程中的 Assert 语句而崩溃,
让我直截了当地说:该框架不是为检查线程中的测试条件(断言)而设计的吗?
不幸的是,C++ 测试框架假定 Asserts 抛出的异常将在同一个线程上。
推荐阅读
- ios - RxSwift 过滤 UICollectionView numberOfItems(:) 的 Observable 变量
- android - 自定义启动画面添加 mp4 视频(?)
- r - 在ggplot2 X轴中重新排序月份
- c - 使用指向数组的指针时在数组外使用 printf
- android - 用例中的道。MVVM 或 Clean Architecture 反模式?
- javascript - React Native(或 React)在单独的 ts 模块中监听暗模式的样式变化
- java - 应用于消息传递 API 的桥接模式
- python - Python - OpenCV pytesseract 不从裁剪图像中提取字符串
- javascript - jQuery图像点击隐藏/显示
- c - C:变量保留先前操作的值而不是重置