チーム開発における単体テストの実践(その2) ~Visual Studio 2012 ソリューションシナリオ

<< ”Visual Studio 2012 ソリューションシナリオ" では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>>

image

 

 このエントリは、「チーム開発における単体テストの実践~その1~」の後編です。

 


プラクティス3:既存の単体テスト資産も活用しよう


既存のプロジェクトを受け継いだり、あるいはプロジェクトの統合によって、既存のコード資産とともに、単体テストも「プロジェクト資産」として受け継ぐことがあります。

しかしそれらの単体テストの資産が、これから使おうとしている Unit Testing Framework と異なるものであったり、また、開発チームの違いから、使用している Testing Framework が異なる場合などが起こるかもしれません。

そのような場合においては、単体テストの実行においては、それぞれのフレームワークにあわせたテスト実行が必要でした。

 

Visual Studio 2012 では、Visual Studio に付属する Microsoft Test 以外のサードパーティ製のフレームワーク、例えばマネージコード用の NUnit や、ネイティブコード用の xUnit++ といったオープンソースの Testing Framework を利用した単体テストに関しても、「テスト エクスプローラー」で一元管理を行うことが可能です。

 

「テスト エクスプローラー」において、既存の単体テスト資産を表示し、テストの実行等を行うためには、それぞれのフレームワークにあわせた Adaptor を拡張機能マネージャーからインストールします。

    image

 

 

このアダプターを利用することにより、既存の単体テスト資産の活用が容易になります。

(もちろん、開発メンバーが Microsoft Test よりも NUnit を使用した開発経験が長くプロジェクトにおいて NUnit を使いたい、といった際に、この Adoptor を活用し NUnit の実行をテストエクスプローラーから実施する、といったこともできます。)

 

具体的な手順については「方法: サードパーティ製の単体テスト フレームワークをインストールする」を参照ください。

また、テスト エクスプローラーにおいて、サードパーティ製の単体テスト フレームワークを活用できるVisual Stduio 2012 のエディションは「Visual Studio 2012 の機能比較」のページの「テスト ツール」の項目の「拡張テスト フレームワーク」をご確認ください。Visual Studio ライセンスに全般ついては「Visual Studio 2012 と MSDN のライセンスホワイトペーパー」を参照ください)。

 


プラクティス4:テストをわかりやすく整理しておこう


開発プロジェクトが進展するにつれ、単体テストのパターン、数も増加します。

適切な単体テスト実行を行うためにも、それらを適切に分類し、また必要な時に必要なテストが行えるように整理を行いましょう。

具体的な手法としては、テストの名称をわかりやすいものにしておく(テストエクスプローラーから、一目で実行すべきテストが理解できるようにしておく)、あるいは、テストプロジェクトを分割しておく、といった方法が考えられます。

 

Visual Studio 2012 においては、これらの手法に加え、開発者が独自の「特徴」(Traits)を設定し、テストエクスプローラーにおいて分類、あるいは検索を行うことが可能です。

※ この機能を利用するには Visual Studio 2012 の Update 1 をインストールしてください。また、Update 1 については、Visual Studio 2012 の Update 1 に関するブログを参照ください。

 

具体的には、以下のように Test Method 毎に「特徴」を定義します。

image

 

  

プロジェクトをビルド後、テストエクスプローラーにおいて「特徴」による分類を指定すると、Test Method で指定した項目に基づき、テストがグループ化され表示されます。

image

 

また、Trait の項目で、検索を行うことも可能です。

image

 

検索においては「-」(マイナス)キーワードを使用することで、除外したいキーワードを指定することもできます。

image

 

また、サードパーティ製の単体テストフレームワークを利用した場合でも、同様にグループ化を行うことが可能です。

下記は NUnit を利用した際のカテゴリー、プロパティの使用例です。

image

 

このようなコードを記述したのち、テストエクスプローラーで、Owner 情報が “toiwade” のテストを確認すると、Microsoft Test を利用したテストと、NUnit を利用したテストが同じように表示されていることが確認できます。

image

 

この状態で、テストの実行を行うことにより、Microsoft Test および NUnit を使って作成されたテストが同時に実行されます(”Owner[toiwade] ” で分類されたテスト3つのうち、メソッド名の冒頭に ”NUnit” がついているのが NUnit でのテスト。それ以外の2つが Microsoft Test によるテストです) 。

image

 

 

単体テストにおける、その他のサードパーティ製フレームワークを使用した場合のグループ化に関しては、「Using Traits with different test frameworks in the Unit Test Explorer」を参照してください。

 

なお、繰り返しになりますがこの機能を利用するには Visual Studio 2012 の Update 1 が必要です。Update 1 については、Visual Studio 2012 の Update 1 に関するブログを参照ください。

 

 

 

今回は、チーム開発における単体テスト実践に関するプラクティスと、Visual Studio 2012 の支援機能を紹介しました。

 

ソリューションシナリオには、以下のシナリオがあります。

 

 

受け入れテストのリスクコントロール

チーム開発における単体テストの実践 ~ その1 ~

チーム開発における単体テストの実践 ~ その2 ~

手動テストの品質向上

コード品質の向上 ~ その1 ~

コード品質の向上 ~ その2 ~ 

・リアルタイム プロジェクト マネジメント

Web アプリのテストの自動化

ソフトウェアの保守におけるアーキテクチャの理解

チームの総合力の強化

 

 

それでは!

岩出