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

}

 

相关文章:

  • 2021-08-09
  • 2021-11-10
  • 2021-10-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-07
  • 2021-04-05
  • 2021-06-09
  • 2022-12-23
  • 2021-04-06
  • 2021-07-30
  • 2022-12-23
相关资源
相似解决方案