googletest--Death Test和Exception Test

 

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

}

 

相关推荐:

Python ThreadPoolExecutor 的 uncaught exception 监控

threadpoolexecutor中任务异常默认静默吞掉,必须显式调用future.exception()或future.result()才能捕获;as_completed/wait不自动抛异常,submit后不检查future则异常丢失。 ThreadPoolExecutor里异常直接消失,根本...

Python BaseException vs Exception 的使用边界

自定义异常应继承exception而非baseexception,因后者包含systemexit、keyboardinterrupt等不应被常规捕获的系统级异常;except:等价于exceptbaseexception:,会静默吞掉ctrl+c,应改用exceptexception:;唯一合理使用...

Python 异常链(exception chaining)是如何工作的?

Python异常链通过__cause__(显式raise...from)和__context__(隐式未处理异常捕获)建立可追溯因果关系,调试时默认展示双堆栈,支持日志记录与语义化错误封装。 Python异常链通过两个核心属性实现错误上下文的显式与隐式关联:`__cause__`和`__contex...

C++ Test是什么

本篇内容介绍了“C++Test是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C++Test自动建立一个测试驱动程序,其设计目标是极大化类的测试覆盖性和错误检测。为类建立测试驱动,你只要简单地打开...

JQuery常用方法总结

Attribute:$(p).addClass(css中定义的样式类型);给某个元素添加样式$(img).attr({src:test.jpg,alt:testImage});给某个元素添加属性/值,参数是map$(img).attr(src,test.jpg);给某个元素添加属性/值$Attrib...

python如何使用Exception else语句

小编给大家分享一下python如何使用Exceptionelse语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Exceptionelse语句使用“else”比在“try”语句中添加多余的代码更好,因为它避免了意外获取不...