您的位置:首页 > 编程语言 > Go语言

GoogleTest框架 使用总结【二】

2018-02-25 18:07 274 查看
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();
else
return ::testing::AssertionFailure() << n << " is odd";
}


这时测试EXPECT_TRUE(IsEven(Fib(4)))将打印出:

Value of: IsEven(Fib(4))

Actual: false (3 is odd)

Expected: true

第三种很像第一种,不多说了~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  GoogleTest 软件测试