テストケースの分類法あれこれ in C# with MSTest #TddAdventJp #TDD by @masaru_b_cl

はじめに

本エントリは「TDD Advent Calendar 2013」の参加エントリです。

8日目は@biacさんの「TDD 最初の一歩 (C#編) #tddadventjp: TDD.NET」でした。

 

テストケースの分類

TDD限らず自動化テストを行っていると、どんどん増えていくテストケースをいかに整理、管理していくかが課題の一つとなってきます。整理できていないと、テストコードの可読性低下、不要なテストが残ることによるテストの実行速度低下、思いがけないレッド(=テスト失敗)などにつながります。

本エントリではC#およびMSTestを使い、「xxがxxの場合、xxがxxならばxxとなる」を表すテストケースの分類方法をまとめてみます。

 

テストケース名での分類

一番シンプルなのが、テストケース名で分類する方法です。

 

 

メリット

  • なんといってもシンプル

デメリット

  • 視認性がいまいち
    image
  • 「、」がテストケース名に使えないので「・」で代用しないといけない
  • テストケース名がいわゆる半角数字で始められないなど、C#の言語仕様に制限される

 

カテゴリーを使った分類

カテゴリーをつけるための属性を使用する方法です。

 

 

メリット

  • テストケース名がシンプルになる
  • テストエクスプローラーで、カテゴリーごとに表示できる
    image
  • ファイルを横断してテストケースを分類できる

デメリット

  • 同じカテゴリーを何度も指定しないといけない
  • カテゴリーごとに表示しても階層は2階層止まり

 

内部クラスを使った分類

テストケースを内部クラスとして定義する方法です。

 

 

メリット

  • テストケース名がシンプルになる
  • 「~の場合」といった内容を一度だけ書けばよい
  • テストエクスプローラーで、内部クラスごとに表示できる
    image
  • 複数階層もいける
  • 別の分類で同じテストケース名が使える

デメリット

  • 少々面倒
  • 内部クラス名、テストケース名がいわゆる半角数字で始められないなど、C#の言語仕様に制限される

 

番外:partialクラスの活用

C#はpatialクラスを使うことで、一つのクラスを複数ファイルに分割することができます。これを利用することで、同一テストクラスでも意味のあるまとまりごとにテストケースを分けて記載することが可能になります。

image

 

 

 

 

最後に

テストケースを整理するために上にあげた方法は排他的なものではないので、それぞれ組み合わせることももちろん可能です。他にももっと良い分類方法などあれば、ぜひ教えてください。

なお、今回のサンプルコードは、GitHubにあげてあります。

https://github.com/masaru-b-cl/TDDAdventJp2013

 

次は

10日目はまだ空いているようです。そこのあなた!ぜひ書いてみてはいかがでしょう!

参加登録は「TDD Advent Calendar 2013の参加状況確認・参加登録 – Qiita [キータ]」から!

[2013/12/11追記]
10日目がアップされました! > @Lewuatheさん++

Agile Samurai Basecamp in Tokyo – The first cry of Atom

広告

テストケースの分類法あれこれ in C# with MSTest #TddAdventJp #TDD by @masaru_b_cl」への1件のフィードバック

  1. ピンバック: 2013年振り返り by @masaru_b_cl | be free

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中