GooglTest GoogleMock 实践感想三 死亡测试初步(1)

刚接触到死亡测试时,感到很新鲜。但按着找到的例子运行后还显示运行错误。

例子源码为

void Foo() 
{// Foo() 该函数在实际运行时异常退出
    int *pInt = 0; 
    *pInt = 42 ; 

 
TEST(FooDeathTest, Demo) 
{     EXPECT_DEATH(Foo(), ""); 
}    

修改为:

void Foo()
{//Foo() 该函数在实际运行时异常退出
int *pInt = 0;
assert(pInt);
*pInt = 42 ;
};

TEST(FooDeathTest, Demo) 
{    
EXPECT_DEATH(Foo(), "\\d"); 
}    

运行正常。

看来所谓的死亡测试用例的目的就在于监督是否添加了assert(...)等断言,以及抛出的断言信息是否符合预期。

该例子中assert()抛出 整形的异常代码 0/1;“\\d”:匹配任何数字型代码见 regex)

好东西。测试健壮性的好工具。

类似,监视异常抛出:

TEST(FooTest, HandleZeroInput)
{

//抛出任何类型的异常
EXPECT_ANY_THROW(Foo(10, 0));
//抛出异常信息为字串
EXPECT_THROW(Foo(0, 5), char*);
/// \ 抛出的异常信息是整形
EXPECT_THROW(FooInt(0, 6),int);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值