お題その1
「お題」の内容について詳しくは、前回の記事(p.4)をご覧ください。メソッドの外部設計は次のようになります。
| 作るもの | メソッド「Calc打率」 | ||||||||||||||
| 置き場所 | クラス「野球選手」 | ||||||||||||||
| 引数 | int 打席数, int 打数, int 安打数 | ||||||||||||||
| 返値の型 | decimal | ||||||||||||||
| 刺激と反応 |
|
||||||||||||||
最初のテストケース
最初は、もっとも簡単な反応を選びます。
引数:打数=1、安打数=0 → 反応:返値(打率)=0.0
Visual Studioが自動生成した「UnitTest1.cs」を削除して、新しく単体テストを追加します。メニュー[テスト]-[新しいテスト]を選ぶと、次のような「新しいテストの追加」ダイアログが出て来るので、[基本単体テスト]を選び、「野球選手Tests.cs」と名前を付けて[OK]をクリックします。
次のようなテストを作ることができます。
| 種類 | 説明 |
| Webパフォーマンス テスト | Webサイトのパフォーマンスのテスト。ロードテストの一部として使う。 |
| コード化されたUIテスト | UIの操作を記録して、繰り返し自動実行できる。デスクトップアプリケーションもWebアプリケーションも可能。 |
| データベース単体テスト | 主に、データベースのストアドプロシージャをテストするのに使う。 |
| ロードテスト | 負荷テストを行うために、複数のテストを集約し、並行して実行することができる。 |
| 基本単体テスト | ユニットテストの枠だけを作る。 |
| 順序指定テスト | 複数のテストを集約し、指定順序で実行する。 |
| 単体テスト | 基本単体テストと同じユニットテストだが、TestContextオブジェクトや前処理・後処理のスケルトンも生成する。 |
| 単体テスト ウィザード | 既存の製品コードから、ユニットテストのスケルトンを生成する。 |
| 汎用テスト | 既存の自動実行テストプログラムを指定し、実行したテスト結果を取り込む。 |
TDDで使うユニットテストは、「基本単体テスト」・「単体テスト」・「単体テスト ウィザード」のいずれかで作成することができます。「単体テスト」で生成される前処理・後処理については「Visual Studio 単体テスト機能大全(3) Visual Studio単体テストの前準備と後始末」を、「単体テスト ウィザード」でユニットテストを作成する方法は「Visual Studio 単体テスト機能大全(1) 改訂版 Visual Studioで作る単体テスト、基本のき(VS2010向け改訂版)(p.2)」をご覧ください。今回は簡単なテストコードなので、「基本単体テスト」を使います。
なお、「新しいテストの追加」ダイアログ下方の「テストプロジェクトに追加」ドロップダウンを実際に見てもらうと、テストプロジェクトとして作ったプロジェクトにしかテストを追加できないことが分かります。
続いて、野球選手Testsクラスにテストケースを次のように記述します。
using Microsoft.VisualStudio.TestTools.UnitTesting; using Tddbc横浜; namespace Tddbc横浜Test { [TestClass()] //←NUnitと違う public class 野球選手Tests { [TestMethod()]//←NUnitと違う public void Calc打率Test01_打席数1打数1安打数0のとき_打率0() { //準備 int 打席数 = 1; int 打数 = 1; int 安打数 = 0; decimal 期待値 = 0.0m; 野球選手 p = new 野球選手(); //実行 decimal 打率 = p.Calc打率(打席数, 打数, 安打数); //検証 Assert.AreEqual<decimal>(期待値, 打率); //←型指定できるところがNUnitと違う } } }
前回の記事(p.4)のNUnitのテストコードと比べてみてください。クラスとメソッドに付ける属性が異なることと、型指定付きのAssert.AreEqual()メソッドで厳密に比較できることが違うくらいです。
野球選手クラスがまだ存在しないのでコンパイルエラーになります(=RED)。REDになったので、製品コードを書けます。野球選手クラスを作り、次いでCalc打率メソッドを作り、メソッドの中身は仮実装し、コンパイルしてテストを実行してみます。テストを実行するには、テストメソッド内で右クリックし[テストの実行]を選択します。(「Visual Studioで作る単体テスト、基本のき(VS2010向け改訂版)(p.2)」を参照)
namespace Tddbc横浜 { public class 野球選手 { public decimal Calc打率(int 打席数, int 打数, int 安打数) { return 0.0m; } } }
これで最初のGREENに到達です。


