首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(Android下使用)Google Test C++单元测试框架(一)

Google Test UI is written in C#. Google Test UI是运行测试程序的测试运行程序,允许您通过进度条跟踪其进度,并显示测试失败的列表。单击其中一个显示故障文本。...在gtest中的使用就是一个函数: TEST() Simple Tests To create a test: Use the TEST() macro to define and name a test...使用TEST()宏定义和命名测试函数,这些是不返回值的普通C++函数。...在这个函数中,连同任何要包含的有效C++语句,使用各种googletest assertions 来检查值。...Google Test断言是类似于函数调用的宏。您可以通过对其行为进行断言来测试类或函数。当断言失败时,Google Test会打印断言的源文件和行号位置以及失败消息。

2.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

    前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。...下面是该系列的目录: 1.玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest 2.玩转Google开源C++单元测试框架Google Test系列(gtest...)之二 - 断言 3.玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制 4.玩转Google开源C++单元测试框架Google Test系列(gtest)...之四 - 参数化 5.玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试 6.玩转Google开源C++单元测试框架Google Test系列(gtest)...之六 - 运行参数 7.玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest 8.玩转Google开源C++单元测试框架Google Test系列(

    1.3K10

    Google Test(GTest)使用方法和源码解析——私有属性代码测试技术分析

    有些时候,我们不仅要测试类暴露出来的公有方法,还要测试其受保护的或者私有方法。GTest测试框架提供了一种方法,让我们可以测试类的私有方法。...TEST_F(FRIEND_TEST_Test2, TEST_F) { ASSERT_EQ(1, foo.Bar()); }         Foo类拥有一个名叫Bar的私有成员函数。...(FRIEND_TEST_Test, TEST);声明的类,然后通过TEST(FRIEND_TEST_Test, TEST)实现测试特例实体,于是该实体中需要使用Foo的构造函数构造一个对象,然后调用其私有的...它使用到了Test Fixtures技术(详见《Google Test(GTest)使用方法和源码解析——预处理技术分析和应用》)。在FRIEND_TEST_Test2类中,声明了一个Foo对象。...然后TEST_F(FRIEND_TEST_Test2, TEST_F)类直接使用了该成员变量调用Bar方法。

    2.9K20

    Google Test(GTest)使用方法和源码解析——死亡测试技术分析和应用

    (转载请指明出于breaksoftware的csdn博客) 死亡测试技术应用         我们可以使用TEST声明并注册一个简单的测试特例。其实现内部才是死亡测试相关代码运行的地方。...*Foo"); }         注意下我们测试用例名——MyDeathTest。GTest强烈建议测试用例名以DeathTest结尾。这是为了让死亡测试在所有其他测试之前运行。...windows系统上进程创建只要调用CreateProcess之类的函数就可以了,这个函数调用后,子进程就创建出来了。...而linux系统上则要调用fork或者clone之类,这两种函数执行机制也不太相同。..._(::CreateProcessA( executable_path, const_cast(command_line.c_str()), NULL,

    2.7K20

    Google Test(GTest)使用方法和源码解析——模板类测试技术分析和应用

    写C++难免会遇到模板问题,如果要针对一个模板类进行测试,似乎之前博文中介绍的方式只能傻乎乎的一个一个特化类型后再进行测试。...接下来我们使用TYPED_TEST_CASE宏注册一个测试用例 TYPED_TEST_CASE(TypeTest, IntegerTypes);         最后我们使用TYPED_TEST_P定义一个测试特例...这个时候我们就要使用高级模式         首先我们需要声明一下测试用例类 TYPED_TEST_CASE_P(TypeTest);         然后使用TYPED_TEST_P定义一个测试实体...具体它的原理和实现可以参看《Google Test(GTest)使用方法和源码解析——自动调度机制分析》。         第12行别名了Types::Head为Type。...internal::Templates::type gtest_AllTests_;       最后在下面注册函数中,触发对该函数使用Verify和Verfiy2进行特化的操作

    3K30

    Google Test(GTest)使用方法和源码解析——概况

    GTest是很多开源工程的测试框架。虽然介绍它的博文非常多,但是我觉得可以深入到源码层来解析它的实现原理以及使用方法。...我们可以通过https://github.com/google/googletest.git得到代码。        ...我们使用者只要照着这样的样板去编写测试用例,是非常方便的,这也将大大降低我们使用GTest库的门槛。         TEST宏是一个很重要的宏,它构成一个测试特例。...以以上代码为例,三段TEST宏构成的是一个测试用例——测试用例名是FactorialTest(阶乘方法检测,测试Factorial函数),该用例覆盖了三种测试特例——Negative、Zero和Positive...(6)); EXPECT_TRUE(IsPrime(23)); }         这组测试用例的名是IsPrimeTest(测试IsPrime函数),三个测试特例是Negative(错误结果场景)

    4.6K20

    Google Test(GTest)使用方法和源码解析——结果统计机制分析

    以《Google Test(GTest)使用方法和源码解析——概况 》一文中最后一个实例代码为基准,修改最后一个“局部测试”结果为错误。...[ FAILED ] 1 test, listed below: [ FAILED ] ListTest.ThirdElement 1 FAILED TEST         在《Google...Test(GTest)使用方法和源码解析——自动调度机制分析》一文中,我们分析了,测试用例对象指针将保存在类UnitTestImpl中 // The vector of TestCases in their...(test_cases_, &TestCase::test_to_run_count); }         CountIf函数返回符合条件的测试用例个数,SumOverTestCaseList函数返回符合条件的所有测试特例的个数...= c.end(); ++it) { if (predicate(*it)) ++count; } return count; }         这种写法的一个好处就是我们封装了函数调用迭代器中元素

    1.9K30

    Google Test(GTest)使用方法和源码解析——断言的使用方法和解析

    在一个测试特例中,如果局部测试使用了EXPECT_*系列函数,它将保证本次局部测试结果不会影响之后的流程。但是ASSERT_*系列在出错的情况下,当前测试特例中剩下的流程就不走了。...Test(GTest)使用方法和源码解析——结果统计机制分析》中介绍保存局部测试结果的宏——GTEST_MESSAGE_。...C++大部分原生类型都是可以使用二进制对比的。但是对于自定义类型,我们就要定义一些操作符的行为,比如=、Google Test(GTest)使用方法和源码解析——结果统计机制分析》。...Sub的实现,其使用了ASSERT_EQ断言,该断言并不会影响Test1测试特例的运行,其原因我们在之前做过分析了。

    5.6K20

    Google Test(GTest)使用方法和源码解析——自动调度机制分析

    在《Google Test(GTest)使用方法和源码解析——概况 》一文中,我们简单介绍了下GTest的使用和特性。从这篇博文开始,我们将深入代码,研究这些特性的实现。...(转载请指明出于breaksoftware的csdn博客) 测试用例的自动保存        当使用一组宏构成测试代码后,我们并没有发现调用它们的地方。...调度的实现         在之前的测试代码中,我们并没有发现main函数。但是C/C++语言要求程序必须要有程序入口,那Main函数呢?...(03行将程序入参传递给了Gtest库,从而实现了《Google Test(GTest)使用方法和源码解析——概况》中所述的“选择性测试”)。...函数见《Google Test(GTest)使用方法和源码解析——概况》分析) UnitTest::UnitTest() { impl_ = new internal::UnitTestImpl(this

    1.7K20

    Google Test(GTest)使用方法和源码解析——Listener技术分析和应用

    在《Google Test(GTest)使用方法和源码解析——结果统计机制分析》文中,我么分析了GTest如何对测试结果进行统计的。...在GTest测试框架中,它提出了一个Listener的概念,以供开发者监听执行过程。GTest框架就是使用Listener机制实现了结果输出。...,字面意思就是测试用例执行开始处(要执行自定义逻辑),此处比较适合输出测试用例的基本信息;再比如OnTestCaseEnd,是测试用例执行结束处(要执行自定义逻辑),此处比较适合输出测试用例的执行结果。...\n", test_info.test_case_name(), test_info.name()); } };         然后我们就需要在main函数中将该Listener...,都可以使用GTest判断类宏进行数据判断。

    1.1K30

    Google Test(GTest)使用方法和源码解析——预处理技术分析和应用

    预处理         在《Google Test(GTest)使用方法和源码解析——概况》最后一部分,我们介绍了GTest的预处理特性。现在我们就详细介绍该特性的使用和相关源码。...在类内部使用public或者protected描述其成员,为了保证实际执行的测试子类可以使用其成员变量(这个我们后面会分析下) 在构造函数或者继承于::testing::Test类中的SetUp方法中,...使用TEST_F宏定义测试特例,其第一个参数要求是1中定义的类名;第二个参数是测试特例名。         其中4这步并不是必须的,因为我们的数据可能不是申请来的数据,不需要释放。...还有就是“构造函数/析构函数”和“SetUp/TearDown”的选择,对于什么时候选择哪对,本文就不做详细分析了,大家可以参看https://github.com/google/googletest/...::TearDown, "TearDown()"); 测试用例级别预处理         这种预处理方式也是要使用Test Fixtures。

    1.7K10

    Google Test(GTest)使用方法和源码解析——参数自动填充技术分析和应用

    在我们设计测试用例时,我们需要考虑很多场景。每个场景都可能要细致地考虑到到各个参数的选择。比如我们希望使用函数IsPrime检测10000以内字的数字,难道我们要写一万行代码么?...它帮我们完成了测试类的注册和测试实体的组织(详见《Google Test(GTest)使用方法和源码解析——自动调度机制分析》)。...本节我们使用的都是TEST_P宏,其实现方式和TEST宏有类似的地方 都定义了一个测试类 都声明了一个虚方法——TestBody 都将赋值符设置为私有 都在末尾定了TestBody函数体的一部分,要求用户去填充测试实体...至于调度及MakeAndRegisterTestInfo的细节可以参见《Google Test(GTest)使用方法和源码解析——自动调度机制分析》。        ...这段逻辑在《Google Test(GTest)使用方法和源码解析——自动调度机制分析》有过分析 void TestInfo::Run() { .......

    5.1K41
    领券