C#テスト駆動開発ユニットテスト編 TDD Visual Studio 2015

 

Microsoft MVPである当社技術顧問の増田による、C#によるテスト駆動開発の講習会がありました。

増田増田 ( 技術顧問 )@moonmile, Microsoft MVP
システムガーディアン技術顧問
趣味はセミアコでブルースを弾くことと農園でラズベリーを育てることとF#でプログラミングすること。仕事は、ええ、びしびしとプログラミング技術を鍛えることと、ばしばしとC#でプログラムコードを書くことです。

 

 

テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD)

プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルである。多くのアジャイルソフトウェア開発手法、例えばエクストリーム・プログラミングにおいて強く推奨されている。近年はビヘイビア駆動開発へと発展を遂げている。

@see Wikipedia

 

テスト駆動開発のメリット

  • テストファーストとして、自分が最初の使用者となりテストを行い、バグが少ないように少しずつ作っていくことが出来る。
  • テストしやすさを意識してクラス設計をする為シンプルな構造になりやすい。
  • 何度でも繰り返しテストすることが出来る
  • テストコードを残しておくことで、ソース自体がドキュメントになる。

命題

CheckIP.cs内のCheckメソッドを書き換えて、UnitTest1.csのユニットテストをクリアするようにします。

CheckIP.cs

 

 

UnitTest1.cs

 

C# テスト駆動 ユニットテスト空欄の場合メソッド部分で右クリックを行い【テスト実行】を選択します。

 

 

C# テスト駆動 ユニットテスト

テストエクスプローラが表示され、空欄の場合メソッドがテストに失敗したことが表示されます。

 

 

 

visual_studio_unittest_20161103_3

ユニットテストが通るようにCheckメソッドを修正していきます。

 

 

 

C# テスト駆動 ユニットテスト

空欄の場合のチェック処理を追加しました。IPv4アドレスが空欄の場合はfalseを返すようにします。

 

 

C# テスト駆動 ユニットテスト

再度空欄の場合メソッドにて【テストの実行】を行います。

 

 

C# テスト駆動 ユニットテスト

空欄の場合メソッドがテストを通過しました!

 

C# テスト駆動 ユニットテスト

 

同じようにCheckメソッドをユニットテストそれぞれのメソッドを通るように追加、修正を行います。

 

C# テスト駆動 ユニットテスト

全てのユニットテストに通りました。

 

 

 

このようにテスト用のクラスを作り、テストしながら少しずつ作っていく『テストファースト』によりバグの少ないスムーズな開発が出来ます。

 

 

//Checkメソッド追記部分は私のソースで恐縮です。増田のソースではありません。

 

優 ( エンジニア )

 

システムガーディアン爆弾処理班
アクセス負荷対策などNginxへの移行案件が多いこの頃。IBM SoftLayerやAWSなどクラウド案件も多くなってきました。

この記事を書いた人:


この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166