猫猫哥

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

Death Test验证某个状态会使进程以某个错误码和错误消息离开

 

#include <gtest\gtest.h>
#include "MyStack.h"

// Death Test:  验证某个状态会使进程以某个错误码和错误消息离开

void function1() {

    std::cerr << "Bad thing happened";
    std::exit(1);  // exit(0) 不算death
}

void function2() {
    std::cerr << "Bad thing happend again.";
    std::exit(22);
}

TEST(tutorial_DeathTest, simpletest) {   // 转换:testcase名字需要以DeathTest结尾
                                         // 因为DeathTests往往需要在其他test之前允许
    int x = 90;

    // death的原因:  
    //    1. 进程以非0值离开 
    //    2. 进程被一个信号杀死

    EXPECT_DEATH(function1(), "Bad thing happened"); //正则表达式

    EXPECT_EXIT(function2(), ::testing::ExitedWithCode(22), ""); // "" 表示不关心错误消息

    //EXPECT_EXIT(function2(), ::testing::KilledBySignal(SIGKILL), ".*");  // Windows上没有


    EXPECT_THROW(st.pop(), std:out_of_range); // 预期st.pop()抛一个std:out_of_range异常.
    EXPECT_ANY_THROW(st.pop()); // 预期st.pop()抛一个任意类型的异常
    EXPECT_NO_THROW(st.pop()); // 预期st.pop()不跑异常

    switch () {

    case -1: FAIL() << "Size can not be negative";   // 报告测试失败

}

 

posted on 2019-01-12 19:50  猫猫哥  阅读(961)  评论(1编辑  收藏  举报