
系统bug。Gtest是Google的一个开源框架,它主要用于写单元测试,检查真自己的程序是否符合预期行为。该软件在运行时gtest测试用例可以走分支,分支覆盖不显示原因,是系统bug的原因,只需要将该软件卸载重新打开即可。
Fatal assertion翻译过来就是致命断言,指的是程序崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时就需要检查程序是否按照预期的方式挂掉。googletest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。
由于有些异常只在Debug下抛出,因此还提供了_DEBUG_DEATH,用来处理Debug和Realease下的不同。
编写致命断言测试案例时,TEST的第一个参数,即testcase_name,请使用DeathTest后缀。原因是googletest会优先运行死亡测试案例,应该是为线程安全考虑。
Debug版和Release版本下, _DEBUG_DEATH的定义不一样。因为很多异常只会在Debug版本下抛出,而在Realease版本下不会抛出,所以针对Debug和Release分别做了不同的处理。
例:
注:\f:换页。将当前位置移到下一页开头。
\n:回车换行。将当前位置移到下一行开头。
\r:回车。将当前位置移到本行开头。
\t:水平制表符。将当前位置移到下一个Tab位置。
\v:垂直制表符。直接跳到下一行的当前位置。
googletest有两种宏,用来表示当前系统支持哪套正则表达式风格:
文章参考: >
我也一直在疑惑这个问题 →_→测试驱动开发就不会出现这样的问题~
之前我写测试代码的时候就很水逼的return一个运行结果
如果那个函数会更改某个非局部变量的值,可以在调用那个函数以后测试那个非局部变量
如果那个函数一定运行成功并且是无状态的。。。那和它外部的函数一起测吧?
只是个人见解,不一定靠谱哈
在 Google Test 中,可以通过“测试夹具”(test fixture)来控制静态变量的值。
测试夹具是一个包含测试所需对象、数据或设置的类。如果我们需要控制静态变量的值,可以将静态变量封装在测试夹具中,再针对测试夹具进行测试。
下面是一个例子:
class MyTestFixture : public testing::Test {
protected:
virtual void SetUp() {
// 在测试之前设置静态变量的值
MyClass::static_var = 0;
}
virtual void TearDown() {
// 在测试之后恢复静态变量的原值
MyClass::static_var = 42;
}
};
TEST_F(MyTestFixture, Test1) {
// 进行测试
}
TEST_F(MyTestFixture, Test2) {
// 进行测试
}
在这个例子中,我们创建了一个名为MyTestFixture的测试夹具,并重载了SetUp()和TearDown()方法以控制静态变量的值。在SetUp()方法中,我们将MyClass::static_var设置为0,以确保在测试开始之前静态变量的值为0。在TearDown()方法中,我们将MyClass::static_var恢复为原值42,以避免影响其他测试。在两个测试中,我们使用TEST_F()宏来定义测试,其中F表示测试夹具类名。由于MyTestFixture是测试夹具的子类,因此我们可以在测试中访问和修改静态变量的值。
通过测试夹具可以有效地控制静态变量的值,确保测试结果的正确性和稳定性。
以上就是关于gtest测试用例可以走分支,分支覆盖不显示原因全部的内容,包括:gtest测试用例可以走分支,分支覆盖不显示原因、GoogleTest(Fatal assertion)-5、gtest如何对没有返回值的函数进行测试等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)