zoukankan      html  css  js  c++  java
  • googletest--Death Test和Exception Test

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

    #include <gtestgtest.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";   // 报告测试失败

    }
  • 相关阅读:
    CSS Sprite
    使用float和display:block将内联元素转换成块元素的不同点
    [POJ 1185] 炮兵阵地
    [POJ 1947] Rebuilding Roads
    [HDU 1561] The more, The Better
    [HDU 1011] Starship Troopers
    [POJ 1155] TELE
    [HDU 2196] Computer
    [HDU 1520] Anniversary party
    [HDU 5029] Relief grain
  • 原文地址:https://www.cnblogs.com/logchen/p/10260816.html
Copyright © 2011-2022 走看看