本文主要是介绍GoogleTest框架 使用总结【二】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
18.2.25一次整理
原文:
https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md
显式(Explicit)测试成功&失败
主要命令如下:
SUCCEED();//当前版本无作用,无任何输出
FAIL();//立刻停止当前测试,并输出错误
ADD_FAILURE(); //输出错误,继续进行测试
ADD_FAILURE_AT(“file_path”,line_number);//输出自定义错误,继续进行测试
FAIL()示例:
TEST(FunTest, MixNumbers)
{FAIL()<<"Test Failure1";FAIL()<<"Test Failure2";
}
输出结果:
test/UnitTest-1.cpp:24: Failure
Failed
Test Failure1
ADD_FAILURE()示例:
TEST(FunTest, MixNumbers)
{ADD_FAILURE()<<"Test Failure1";ADD_FAILURE()<<"Test Failure2";
}
输出结果:
test/UnitTest-1.cpp:24: Failure
Failed
Test Failure1
test/UnitTest-1.cpp:31: Failure
Failed
Test Failure2
ADD_FAILURE_AT()示例:
TEST(FunTest, MixNumbers)
{ADD_FAILURE_AT("Show it ",12);
}
输出结果:
Show it :12: Failure
Failed
对于错误处理Throw的测试
断言式(与预期不符,则退出当前测试):
ASSERT_THROW(statement, exception_type)
ASSERT_ANY_THROW(statement)
ASSERT_NO_THROW(statement)
期望式(即使不符,仍然进行测试):
EXPECT_THROW(statement, exception_type)
EXPECT_ANY_THROW(statement)
EXPECT_NO_THROW(statement)
很简单,不进行详细说明了~
给一个官方的例子吧
ASSERT_THROW(Foo(5), bar_exception);EXPECT_NO_THROW({int n = 5;Bar(&n);
});
更详细的错误信息
GoogleTest给出的文档提了三种方法,我个人推荐更通用(优雅)的第二种方法。
第一种方法,就是使用
ASSERT_PREDx与EXPECT_PREDx这种预先定义好的,参数为(函数名,需要传入的形参1,需要传入的形参2,……)(x代表需要传入的形参)
第二种方法使用了::testing::AssertionResult这个预先定义的类。
基于这个类,有两个派生类:
// Returns an AssertionResult object to indicate that an assertion has
// succeeded.
AssertionResult AssertionSuccess();// Returns an AssertionResult object to indicate that an assertion has
// failed.
AssertionResult AssertionFailure();
我们可以使用<<来将错误信息打印出来。例子如下:
::testing::AssertionResult IsEven(int n) {if ((n % 2) == 0)return ::testing::AssertionSuccess();elsereturn ::testing::AssertionFailure() << n << " is odd";
}
这时测试EXPECT_TRUE(IsEven(Fib(4)))将打印出:
Value of: IsEven(Fib(4))
Actual: false (3 is odd)
Expected: true
第三种很像第一种,不多说了~
这篇关于GoogleTest框架 使用总结【二】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!