googletest:死亡测试:单个测试中的多个期望
googletest: death tests: multiple expect_exit in single test
是否可以在Windows平台上的一个测试中使用多个Expect_Exit宏?问题之所以发生,是因为在Windows平台上的死亡测试以"线程安全"模式起作用,因此Expect_Exit宏所产生的过程将从一开始就运行所有测试。考虑示例代码:
TEST_F(MyFixtureDeathTest, Test1)
{
EXPECT_EXIT(f(), ::testing::ExitedWithCode(1), "message1");
//....
// actions after the exit (for instanse, emulation of the application correct restart)
//....
EXPECT_EXIT(g(), ::testing::ExitedWithCode(1), "message2");
}
因此,当测试到达第二个Expect_EXIT宏时,它将使代码从测试开始,因此它将调用F()函数,在此处退出,实际上永远不会到达G()功能的主体。也许,我根本不应该将Googletest用于此任务,我应该吗?
任何帮助将不胜感激。谢谢。
upd。(澄清)实际上,我很确定现在在所述代码段中,即使函数f()也不会从第二个Expect_Exit宏所产生的过程中调用。
upd。现在的问题对我来说似乎有些不同。正如弗拉德洛塞夫(Vladlosev)所说,在第二个宏所产生的儿童过程中,第一个宏将被完全忽略。但是,如果基于F()功能的某些结果,则在两个宏之间有任何断言,儿童过程将击中并退出那里,因此它将无法到达G()。
。否,此代码将按预期工作。死亡测试子进程知道它是从中调用了哪个死亡测试宏,并且只会执行该宏中指定的经过测试的陈述。例如,在您的代码中,在第二个EXPECT_EXIT
宏中调用的孩子只能执行g()
并跳过f()
。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 数据成员SFINAE的C++17测试:gcc vs clang
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么二进制搜索在我的测试中不起作用
- 从父数组测试用例构造二叉树失败
- 试图对缓存进行跨步测试,但程序并没有结束
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- OpenGL在启用深度测试时不会丢弃我的碎片
- 为测试目标创建具有不同源文件夹的文件
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 如何测试序列生成器将生成期望的项目
- 在Google测试框架中,如何期望函数调用或其他功能调用
- 我如何检查一次测试中有多少个``期望_*`呼叫失败
- 协议缓冲区测试C++:期望/tcl/tk
- 使用谷歌测试期望一个给定范围内的值
- googletest:死亡测试:单个测试中的多个期望
- 我如何告诉GoogleMock在测试结束后停止检查期望?