我想知道,是否有可能检查失败的ASSERT
或EXPECT
语句发生在一个被调用的函数内部,并且独立于任何其他或以前失败的ASSERT
/EXPECT
语句。基本上:
void subcheck () {
EXPECT_EQ(1,1);
}
void check () {
EXPECT_EQ(1,2);
subcheck();
//Here I want to determine whether subcheck had failure
}
字符串
我不能在 TestFailure 上询问,因为在subcheck
之前有一个失败。另外,我想避免使用类似返回bool
的函数的变通方法,因为这会使ASSERT
复杂化,并有其他并发症。
有没有办法做到这一点?在单独的线程中启动该函数或重置失败标志?
2条答案
按热度按时间kcugc4gi1#
正如之前在@Yksisarvinen的评论中提到的,你可以使用
EXPECT_NO_FATAL_FAILURE
宏(或它的ASSERT
对应物)。即使subcheck
例程包含only非致命Assert,这也有效。在你的例子中,下面是你如何检查它:字符串
输出为:
型
另一种方法是使用
testing::AssertionResult
。下面是一个例子:型
这一次,输出如下所示:
型
说到这里,我建议你重新考虑你的测试策略,因为你的测试听起来太复杂了。遵循“一个ASSERT规则”可能很难,也不总是令人不安,但你仍然尽可能地努力。希望这能有所帮助!
cgh8pdjw2#
可以使用
EXPECT_EQ
,然后使用ASSERT_EQ
。字符串