SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
TDD	
  for	
  C++	
  実演
環境	
•  Visual	
  Studio	
  2010	
  
    –  コンソールアプリケーションプロジェクトを作ります	
  
•  Google	
  Test	
  1.6	
  
    –  すぐに使えるバイナリを用意しました	
  
        •  h6ps://bitbucket.org/kaorun55/
           google_test_and_mock	
  
        •  C: に展開してください	
  
        •  同梱の「gtest_gmock.props」にパスの設定などを入れ
           たので、VSに読み込ませるとすぐにテストが書けます	
  
    –  実際のコミットログはこちらです	
  
        •  h6ps://github.com/kaorun55/tddbc/commits/tdd4cpp	
  
実演
テスティングフレームワークのテスト

 EXPECT_EQが失敗することを確認する	
#include	
 <gtest/gtest.h>	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 0,	
 1	
 );	
 
}
テスティングフレームワークのテスト

 EXPECT_EQが成功することを確認する	
#include	
 <gtest/gtest.h>	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 0,	
 0	
 );	
 
}
テストを作成する

 実装がないので、ビルドでエラーになる	
#include	
 <gtest/gtest.h>	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
}
テスト対象を実装する

                 テストは失敗する	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 return	
 0;	
 
}	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
}
テストが通る最低限の実装をする	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 return	
 3;	
 
}	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
}
新しいテストを書く

                    テストは失敗する	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 return	
 3;	
 
}	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 7,	
 add(	
 3,	
 4	
 )	
 );	
 
}
テストが通る最低限の実装をする	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 if	
 (	
 (val1	
 ==	
 1)	
 &&	
 (val2	
 ==	
 2)	
 )	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 return	
 3;	
 
	
 	
 	
 	
 }	
 
	
 
	
 	
 	
 	
 return	
 7;	
 
}	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 7,	
 add(	
 3,	
 4	
 )	
 );	
 
}
新しいテストを書く

                             テストは失敗する	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 if	
 (	
 (val1	
 ==	
 1)	
 &&	
 (val2	
 ==	
 2)	
 )	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 return	
 3;	
 
	
 	
 	
 	
 }	
 
	
 
	
 	
 	
 	
 return	
 7;	
 
}	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 7,	
 add(	
 3,	
 4	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 11,	
 add(	
 5,	
 6	
 )	
 );	
 
}
テストが通る最低限の実装をする	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 if	
 (	
 (val1	
 ==	
 1)	
 &&	
 (val2	
 ==	
 2)	
 )	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 return	
 3;	
 
	
 	
 	
 	
 }	
 
	
 	
 	
 	
 else	
 if	
 (	
 (val1	
 ==	
 3)	
 &&	
 (val2	
 ==	
 4)	
 )	
 {	
 
	
 	
 	
 	
 	
 	
 	
 	
 return	
 7;	
 
	
 	
 	
 	
 }	
 
	
 
	
 	
 	
 	
 return	
 11;	
 
}	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 7,	
 add(	
 3,	
 4	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 11,	
 add(	
 5,	
 6	
 )	
 );	
 
}
リファクタリングする	
#include	
 <gtest/gtest.h>	
 
	
 
int	
 add(	
 int	
 val1,	
 int	
 val2	
 )	
 
{	
 
	
 	
 	
 	
 return	
 val1	
 +	
 val2;	
 
}	
 
	
 
TEST(	
 TestSample,	
 add	
 )	
 
{	
 
	
 	
 	
 	
 EXPECT_EQ(	
 3,	
 add(	
 1,	
 2	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 7,	
 add(	
 3,	
 4	
 )	
 );	
 
	
 	
 	
 	
 EXPECT_EQ(	
 11,	
 add(	
 5,	
 6	
 )	
 );	
 
}
以降も、	
  
テスト実装→コード実装	
  
  を繰り返します

Mais conteúdo relacionado

Semelhante a tdd4cpp demo

Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
Yohei Sato
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
fumoto kazuhiro
 
ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011
H Iseri
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
 

Semelhante a tdd4cpp demo (20)

xUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase ClassxUTP Chapter19 (2). Testcase Class
xUTP Chapter19 (2). Testcase Class
 
Unit test in android
Unit test in androidUnit test in android
Unit test in android
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 
Junit intro
Junit introJunit intro
Junit intro
 
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_cccJEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
 
iOSビヘイビア駆動開発
iOSビヘイビア駆動開発iOSビヘイビア駆動開発
iOSビヘイビア駆動開発
 
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
 
About Jobs
About JobsAbout Jobs
About Jobs
 
20141129-dotNet2015
20141129-dotNet201520141129-dotNet2015
20141129-dotNet2015
 
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
 
ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011ユニットテストの保守性を作りこむ, xpjugkansai2011
ユニットテストの保守性を作りこむ, xpjugkansai2011
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
Akka Unit Testing
Akka Unit TestingAkka Unit Testing
Akka Unit Testing
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 

Mais de Kaoru NAKAMURA

Mais de Kaoru NAKAMURA (20)

AR/VR seminar
AR/VR seminarAR/VR seminar
AR/VR seminar
 
3D depth sensor world
3D depth sensor world3D depth sensor world
3D depth sensor world
 
HoloLensとWindows Mixed Reality が実現する新しい世界
HoloLensとWindows Mixed Reality が実現する新しい世界HoloLensとWindows Mixed Reality が実現する新しい世界
HoloLensとWindows Mixed Reality が実現する新しい世界
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーションVisual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
HoloLens概要 仙台IT文化祭
HoloLens概要 仙台IT文化祭HoloLens概要 仙台IT文化祭
HoloLens概要 仙台IT文化祭
 
HoloLens概要
HoloLens概要HoloLens概要
HoloLens概要
 
HoloLensハンズオン(ショート)
HoloLensハンズオン(ショート)HoloLensハンズオン(ショート)
HoloLensハンズオン(ショート)
 
HoloLensハンズオン(セットアップ)
HoloLensハンズオン(セットアップ)HoloLensハンズオン(セットアップ)
HoloLensハンズオン(セットアップ)
 
ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来
 
Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方
 
Depthセンサーで稼ぐ
Depthセンサーで稼ぐDepthセンサーで稼ぐ
Depthセンサーで稼ぐ
 
KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方
 
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
Visual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーションVisual Studio OnlineとUnityを使ったバージョン管理と継続的インテグレーション
Visual Studio OnlineとUnityを使った バージョン管理と 継続的インテグレーション
 
Kinect v2 応用事例
Kinect v2 応用事例Kinect v2 応用事例
Kinect v2 応用事例
 
いま注目のセンサー&デバイス
いま注目のセンサー&デバイスいま注目のセンサー&デバイス
いま注目のセンサー&デバイス
 
内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー
 
インテル Real Sense Hands On Lab
インテル Real Sense Hands On Labインテル Real Sense Hands On Lab
インテル Real Sense Hands On Lab
 
子どもとデジタル現在進行形
子どもとデジタル現在進行形子どもとデジタル現在進行形
子どもとデジタル現在進行形
 
HVC-C Open Fab Night HVC-CをiOSでいじってみた
HVC-C Open Fab Night HVC-CをiOSでいじってみたHVC-C Open Fab Night HVC-CをiOSでいじってみた
HVC-C Open Fab Night HVC-CをiOSでいじってみた
 
ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合
 

tdd4cpp demo