gtest测试用例可以走分支,分支覆盖不显示原因

gtest测试用例可以走分支,分支覆盖不显示原因,第1张

系统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如何对没有返回值的函数进行测试等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10207081.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存