g m o c k d e m o 案例G G M M o o c c k k ((G G o o o o g g l l e e M M o o c c k k ))是是G G o o o o g g l l e e 开开发发的的一一个个C C ++++单单元元测测试试框框架架,,它它基基于于x x U U n n i i t t 系系列列测测试试框框架架的的思思想想,,并并结结合合了了模模拟拟对对象象((m m o o c c k k o o b b j j e e c c t t ))的的概概念念。
G G M M o o c c k k 可可以以帮帮助助开开发发者者编编写写可可靠靠、、清清晰晰且且易易于于维维护护的的单单元元测测试试。
下下面面是是一一个个简简单单的的G G M M o o c c k k 示示例例,,以以帮帮助助你你更更好好地地了了解解其其用用法法和和功功能能::假假设设我我们们有有一一个个名名为为C C a a l l c c u u l l a a t t o o r r 的的类类,,它它包包含含了了四四个个基基本本的的数数学学运运算算方方法法::加加法法、、减减法法、、乘乘法法和和除除法法。
我我们们想想要要编编写写一一个个测测试试用用例例,,验验证证这这些些方方法法的的正正确确性性,,并并且且使使用用G G M M o o c c k k 来来模模拟拟一一些些对对象象。
首首先先,,我我们们需需要要在在项项目目中中包包含含G G M M o o c c k k 框框架架的的头头文文件件,,并并使使用用G G M M o o c c k k 的的命命名名空空间间::``````c c p p p p##i i n n c c l l u u d d e e <<g g t t e e s s t t //g g t t e e s s t t ..h h >>##i i n n c c l l u u d d e e <<g g m m o o c c k k //g g m m o o c c k k ..h h >>u u s s i i n n g g n n a a m m e e s s p p a a c c e e ::::t t e e s s t t i i n n g g ;;``````接接下下来来,,我我们们可可以以开开始始编编写写测测试试用用例例,,并并使使用用G G M M o o c c k k 来来模模拟拟对对象象::``````c c p p p pc c l l a a s s s s M M o o c c k k C C a a l l c c u u l l a a t t o o r r :: p p u u b b l l i i c c C C a a l l c c u u l l a a t t o o r r {{p p u u b b l l i i c c ::M M O O C C K K __M M E E T T H H O O D D ((i i n n t t ,, A A d d d d ,, ((i i n n t t ,, i i n n t t )),, ((o o v v e e r r r r i i d d e e ))));; M M O O C C K K __M M E E T T H H O O D D ((i i n n t t ,, S S u u b b t t r r a a c c t t ,, ((i i n n t t ,, i i n n t t )),, ((o o v v e e r r r r i i d d e e ))));; M M O O C C K K __M M E E T T H H O O D D ((i i n n t t ,, M M u u l l t t i i p p l l y y ,, ((i i n n t t ,, i i n n t t )),, ((o o v v e e r r r r i i d d e e ))));; M M O O C C K K __M M E E T T H H O O D D ((d d o o u u b b l l e e ,, D D i i v v i i d d e e ,, ((d d o o u u b b l l e e ,, d d o o u u b b l l e e )),, ((o o v v e e r r r r i i d d e e ))));;}};;T T E E S S T T ((C C a a l l c c u u l l a a t t o o r r T T e e s s t t ,, A A d d d d T T e e s s t t )) {{M M o o c c k k C C a a l l c c u u l l a a t t o o r r c c a a l l c c u u l l a a t t o o r r ;;//// 设设置置模模拟拟对对象象的的行行为为E E X X P P E E C C T T __C C A A L L L L ((c c a a l l c c u u l l a a t t o o r r ,, A A d d d d ((22,, 33))))..T T i i m m e e s s ((11))..W W i i l l l l O O n n c c e e ((R R e e t t u u r r n n ((55))));;//// 调调用用模模拟拟对对象象的的方方法法i i n n t t r r e e s s u u l l t t == c c a a l l c c u u l l a a t t o o r r ..A A d d d d ((22,, 33));;//// 断断言言结结果果是是否否符符合合预预期期E E X X P P E E C C T T __E E Q Q ((r r e e s s u u l l t t ,, 55));;}}``````在在上上面面的的代代码码中中,,我我们们创创建建了了一一个个名名为为M M o o c c k k C C a a l l c c u u l l a a t t o o r r 的的类类,,它它继继承承自自C C a a l l c c u u l l a a t t o o r r 类类,,并并且且使使用用``M M O O C C K K __M M E E T T H H O O D D ``宏宏来来定定义义模模拟拟对对象象的的方方法法。