- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 EXPECT_DEATH()
测试断言它在 Ubuntu(gitlab ci 管道)上失败了 killed by signal 6 SIGABRT
.但是,完全相同的代码在 Windows 上运行良好。
Afaik,这个宏是专门为处理带有错误代码的退出而设计的。
#include "gtest/gtest.h"
class MyDeathTest : public ::testing::Test {
protected:
...
};
TEST_F(MyDeathTest, TestNegative1) {
EXPECT_DEATH(assert(false), "");
}
我尝试使用
EXPECT_EXIT(assert(false), ::testing::KilledBySignal(SIGBART)), "");
而是
::testing::ExitedWithCode(6)
,以及
EXPECT_DEBUG_DEATH()
,
EXPECT_DEATH_IF_SUPPORTED()
等没有运气。
GTEST_FLAG_SET(death_test_style, "threadsafe");
但得到
error: 'GTEST_FLAG_SET' was not declared in this scope;
关于修复的任何建议?
最佳答案
有几件事:
SIGABRT
,而不是 SIGBART
GTEST_FLAG_SET
宏呢。您可以使用它作为替代方案:(void)(::testing::GTEST_FLAG(death_test_style) = "threadsafe");
工作示例:
https://godbolt.org/z/15azKeMG4
In googletest, death tests are run in a child process and the way theywork is delicate. To write death tests you really need to understandhow they work—see the details at Death Assertions in the AssertionsReference.
In particular, death tests don’t like having multiple threads in theparent process. So the first thing you can try is to eliminatecreating threads outside of EXPECT_DEATH(). For example, you may wantto use mocks or fake objects instead of real ones in your tests.
Sometimes this is impossible as some library you must use may becreating threads before main() is even reached. In this case, you cantry to minimize the chance of conflicts by either moving as manyactivities as possible inside EXPECT_DEATH() (in the extreme case, youwant to move everything inside), or leaving as few things as possiblein it. Also, you can try to set the death test style to "threadsafe",which is safer but slower, and see if it helps.
threadsafe
.
关于c++ - Gtest EXPECT_DEATH() 因 SIGABRT 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71251067/
我的代码在使用 malloc 时遇到问题。直到一个小时前它一直运行良好。它导致这一行 temp2 = (Temp*)malloc(sizeof(Temp));
我的应用程序运行完美,没有任何问题。但是当我尝试调试它时,android studio 卡住了。所以我收到消息“等待调试器”,然后该消息消失,接下来我在模拟器中只看到黑屏。 我也收到了消息 SIGNA
我用 node-js 和 fluent-ffmpeg 编写了一个 node-js api: 'use strict'; require('babel-register'); const path =
我只是在过去一直工作的模拟器上运行我的代码。我真正为启动代码所做的唯一一件事就是设置用户默认值 NSUserDefaults *defaults = [NSUserDefaults standard
我遇到应用程序每次运行时都会在模拟器上崩溃。由于某种原因,他们收到一个中止信号(见附件截图)。最近才开始用,不知道是不是和10.8.4升级有关。 我刚刚基于“单一 View 应用程序”模板创建了一个新
我的应用程序中存在一个错误,使我发疯!尝试隐藏navigationController工具栏后,主线程会收到SIGABRT消息。 [self.navigationController setToolb
我无法理解以下崩溃,因为它是随机发生的,并且我怀疑可能是多线程问题,但是这里是: Incident Identifier: 0BE956AB-228A-4B1B-8A3D-A99A481F7F3F C
我最近设置了 Crashlytics 以从我的 iOS 应用程序接收崩溃日志,并且我不断收到 SIGABRT 崩溃日志,但我找不到它的来源。 如果你能帮我一点,这是崩溃日志: Exception Ty
我正在尝试通过指针来理解这项工作。所以我编写了一个测试程序,其中通过删除分隔点将名称分成标签。每个标签都表示为长度/数据对,如下所示:google.ru 表示为“x\06googlex\02ru”当我
我正在研究教授给我们的一些旧课本,为即将到来的考试做准备,我遇到了这个问题。 我的任务是从结构如下的文本文件中读取信息: [十进制数字],[罗马数字(字符串)],[o 或 u(优化或未优化的罗马数字)
#toggle the string #include int main() { char S[100],ch; int i=0; gets(S); while((S[i]!
我正在开展一个学校项目,我需要从文件中获取矩阵的信息(高度、宽度、单元格状态)。像这样的事情: 30 40 /*height and width*/ 3 /*nr of lines
我学习 Swift 一段时间了,SIGABRT 信号随机出现了好几次。我尝试过一些在线教程,但似乎并不总是有效。 这次我试图用两个 View Controller 设置一个待办事项列表。一个有一个表格
我在我的项目中添加了第二个目标,以便能够对多个应用程序使用相同的 Xcode 项目(基本应用程序的风格略有变化)。我重命名了目标,更改了方案以匹配名称,还重命名了第二个 info.plist。现在,当
我试图运行一个简单的代码,它编译但当我尝试运行它时我得到(核心转储)错误。于是用gdb查看错误是什么。 代码: #include #include #include void gerar() {
我为这个问题苦苦挣扎了 2 天。我有一个解决方法,但我想了解更多会发生什么。让我们开始吧。我有一个非常原始的异常类,它保存一条错误消息作为指向字符数组的指针(我知道 std::string 的利润)。
NSString *aName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
我正在尝试从框架动态加载类,但应用程序因转换发送 SIGABRT 信号而崩溃: let newClassType = NSClassFromString("MyFramework.CustomClas
当我运行我的应用程序时, View Controller 中会调用一个函数,当发生这种情况时,我会收到信号 SIGABRT。 如何解决这个问题? 功能: func setRootViewControl
我正在尝试保存 UISwitch 结果并使用它们来填充 Parse.com 推送通知的“ channel ”。我遵循了解析指南,但每次我尝试单击保存开关值的保存按钮时,我都会收到一个 SIGABRT。
我是一名优秀的程序员,十分优秀!