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

    }
  • 相关阅读:
    hdu1049Climbing Worm
    hdu1290献给杭电五十周年校庆的礼物
    hduNumber Sequence
    VS2012创建项目模板创建vsix扩展组件
    那些热血沸腾的电子竞技背景音乐
    学习总结
    学习总结第六周
    第二次课堂测试1
    学习总结第五周
    一个简单的学生成绩管理系统(用JAVA实现)
  • 原文地址:https://www.cnblogs.com/logchen/p/10260816.html
Copyright © 2011-2022 走看看