「テストコードのないコードはレガシーコードだ」というのはよく聞く話ですが、恥ずかしながら私もずっとテストコードを書く文化のない環境で働いてきたため、テストコードというものを書いたことがありません。
さすがにこのままではまずいと思い、C# で書いたコードでは MSTest でユニットテストを行う癖をつけたいと思いました。
というわけで、MSTest の導入方法です。
本当に最初の最初の導入方法について書いただけですが・・・。
テストプロジェクトの作成
まずはソリューション内にテストを行うためのプロジェクトを作成するようです。
MSDN よれば、1つのプロジェクトに対して1つのテストプロジェクトを作成するのが基本のようですね。
ソリューション内にプロジェクトが2つあれば、それぞれに対応するテストプロジェクトを作成(テストプロジェクトを2つ作成)するということですね。
テストプロジェクトの作成方法には2つの方法があるようです。
- 手動で新規にテストプロジェクトを作成する
- メソッドからテストプロジェクトを作成する
前者の「手動で新規にテストプロジェクトを作成する」方法は、
- チームエクスプローラーでソリューションを右クリック
- [追加] > [新しいプロジェクト] を選択
- サイドバーで [Visual C#] > [テスト] を選択
- [単体テストプロジェクト] を選択
で、作成できます。
ただ、後者のメソッドから作成する方法のほうが楽なんじゃないかと思いました。
「メソッドからテストプロジェクトを作成する」方法は、
- テストしたいメソッド名の上で右クリック > [単体テストの作成] を選択
テストフレームワークは MSTest を選択します。
テストプロジェクトは「新しいテストプロジェクトを」を選択します。
既にテストプロジェクトを作成していればそのプロジェクトを選択することもできます。
とりあえずこれで作成してみます(他の項目は追々勉強していきます)。
するとテストプロジェクトとテストメソッドが作成されます。
一応注意点として、テストを作成するためにはクラスとメソッドが public でなければなりません。
(private なメソッドをテストする方法もあるみたいですが・・・。)
で、作成されたコードを見ればわかりますが、
- テストプロジェクトの名前は「テストするプロジェクトの名前 + Tests」
- テストプロジェクトの名前空間は「テストするプロジェクトの名前.Tests」
- テストクラスの名前は「テストするクラスの名前 + Tests」
- テストメソッドの名前は「テストするメソッドの名前 + Test」
になるようですね。
MSDN でもこの標準の名前付け規則を採用することをお勧めするとあります。
テストの実行方法
メニュバーから [テスト] を選択 > [実行] > [すべてのテスト]
で、とりあえずテストが実行でき、テスト結果がテストエクスプローラーに表示されます。
また、エディタ内で右クリック > [テストの実行] でもテストが行えます。
このとき、右クリックした位置で以下のように変わるようです。
- クラス内で右クリック > [テストの実行]:クラス内のすべてのテストメソッドを実行
- テストメソッド内で右クリック > [テストの実行]:そのテストメソッドのみを実行
テストコードの書き方はまた追々書きます。