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

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

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

 

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メソッド追記部分は私のソースで恐縮です。増田のソースではありません。

 

 

C# テスト駆動 ユニットテスト
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG