• gtest中如何跳出当前测试案例


    在前面的玩转gtest - 断言中, 我们提到了ASSERT_*系列的断言只是在当前函数返回,并非退出当前测试案例,因为ASSERT_*系列是通过return来实现的(因此 ASSERT_*系列不能在返回值不为void的函数内出现)。要退出当前测试案例,一个最简单的方法就是通过抛异常,然后让gtest捕获这一异常。示例如下:

    void Func(int a, int b)
    {
        
    throw "b==0";
        EXPECT_EQ(
    0, a\b);
        printf(
    "End of Func");
    }

    TEST(FooTest, Demo1)
    {
        Func(
    50);
        printf(
    "End Call Func(5, 0)");
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
        testing::GTEST_FLAG(catch_exceptions) 
    = 1;
        testing::InitGoogleTest(
    &argc, argv);
        
    return RUN_ALL_TESTS();
    }

    (上面的两个printf函数都不会执行。)

    要退出当前测试案例,你只需要两步:
    1.设置catch_exception标志,在main函数或是在你的测试案例前都可以。
    2.要跳出测试案例时,只需要通过throw抛出任意异常即可。

    为何通过这种方法可以跳出当前测试案例,请参考玩转gtest - 深入解析gtest

    需要注意的是:假如使用的是TEST_F宏,跳出当前测试案例后,会执行TearDown(),因此不必当心TearDown中释放资源的操作不会执行。

    我认为一个好的测试案例,应该是在你的测试函数中,比如TEST宏内,清晰的表达出你要测试的对象,以及预期的测试结果。因此,通常情况下,EXPECT_*和 ASSERT_*应该尽量在测试函数中出现,而不是在测试函数内调用的另外函数或是里面很多层的函数内才出现。(比如上面的Func函数中的 EXPECT_EQ)。
    微信扫一扫交流

    作者:CoderZh
    公众号:hacker-thinking (一个程序员的思考)
    独立博客:http://blog.coderzh.com
    博客园博客将不再更新,请关注我的「微信公众号」或「独立博客」。
    作为一个程序员,思考程序的每一行代码,思考生活的每一个细节,思考人生的每一种可能。
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    电话号码和手机号码正则
    IntelliJ Idea 常用快捷键
    springboot常用注解
    idea常用快捷键和插件
    百度地图API的使用方法
    js 经常用到的键盘码
    https://www.cnblogs.com/
    axios传参 后台接收为空
    面相对象之继承
    初始面向对象
  • 原文地址:https://www.cnblogs.com/coderzh/p/1536901.html
Copyright © 2020-2023  润新知