Visual Studio 2012から、やっとネイティブC++の単体テストがサポートされました(Visual Studio 2010では、C++/CLIでのテストコードでした)。
Visual Studio 2012 では Windows ストアアプリ用のC++/CXも追加された(もちろんテストプロジェクトもあります)ので、実際には次の3つの単体テストプロジェクトがあります。
ここでは、Visual Studio 2012 UltimateでのネイティブC++の単体テストの手順を順番に紹介します。Visual Studio 2012 Express for Desktop でも一部機能をのぞいて、ほぼ同様の機能が実装されています。
1. テスト対象のプロジェクトを作成します。ここでは「Win32 コンソールアプリケーション」で「NativeLibrary」というプロジェクト名にしています。
2. アプリケーションの種類を「スタティック ライブラリ」にして「完了」します。
3. 続いて、同じソリューションに「ネイティブ単体テスト プロジェクト」を作成します。
4. ソリューションにテスト対象のライブラリ「NativeLibrary」と、テストプロジェクトの「NativeLibraryTest」の2つが作成されました。
5. この状態で、一度ビルドしてみましょう。テストエクスプローラーに「未実行のテスト」が追加されます。テストエクスプローラーが表示されていない場合は、メニューの「テスト|ウィンドウ|テストエクスプローラー」から表示してください。
6. 今度は「テストエクスプローラー」の左上にあるボタンを押して「リビルド」してみてください。ビルドの終了とともに、テストが実行されます(この機能はExpressにはありません)。
7. テストメソッド名を変えてみます。日本語も通りますので好きな名前にしてみてください。これでビルドすると、テストエクスプローラーのほうもメソッド名が変わります。
8. 実際にテスト対象にするクラスを作りましょう。NativeLibraryプロジェクトの「追加」からクラスを追加します。
9. Calcと名前を付けたクラスを作成します。
10. 足し算のメンバ関数を作成します。とりあえず実装はしません。
11. NativeLibraryTestのプロジェクトプロパティを開き、C++の「追加のインクルード ディレクトリ」に「$(SolutionDir」を追加します。
12. 続いて「共通プロパティ」の「新しい参照の追加」を押します。
13. テスト対象の「NativeLibrary」プロジェクトが表示されるので、チェックを入れて「OK」を押します。
14. 参照に「NativeLibrary」が追加されたことを確認します。
15. これでテストの準備ができたので「NativeLibraryTest」プロジェクトにテストコードを書きます。テスト対象を実装していないので、テストは失敗します。
16. テスト対象の実装をします。テストは成功します。
ここまででネイティブC++での単体テストの基本はおしまいです。C#のようにメソッドスタブやクラスの自動生成、リファクタリングといった機能はないので、若干手間がかかります。
次回は、このプロジェクトを使って、クラウド上の Team Foundation Service Previewでビルドとテストを行います。