【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
 

連載
C++開発者のための単体テスト入門

第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

επιστημη(えぴすてーめー)
2007/09/14
Page1 Page2 Page3 Page4

 単体テスト・フレームワーク(Unit Test Framework)は、さまざまな言語に対応したものが無償でリリースされています。Cに対応した「CUnit」、Javaの「JUnit」、前回紹介したC++対応の「CppUnit」などがあります。これらは“xUnit”と総称されます。

 もちろんC#やVisual Basic(.NET/2005)に代表されるCLI(Common Language Infrastructure)に準拠した.NET言語で書かれたプログラムをテストするための単体テスト・フレームワークもあり、その1つが「NUnit」です。NUnitはC#で実装されたアセンブリ(.DLLファイル群)と単体テスト実行環境(nunit.exe/nunit-console.exeファイル)で構成されており、.NET言語に対応したxUnitとしては最も広く使われています。

 Visual Studio 2005(以下、VS 2005)に組み入れられたVisual C++ 8.0は独自の言語拡張「C++/CLI」によって.NETマネージ・コード(managed code)を生成できますから、C++/CLIで書かれたテストをNUnitで実行することができます。さらにC++/CLIは従来のネイティブなC/C++コード(native code)を呼び出せるのですから、C/C++によるネイティブ・コードのテストをC++/CLIで作成することで、(マネージ・コードだけでなく、ネイティブ・コードも)NUnitでテストできるわけです。

 今回は、このNUnitについて簡単に紹介し、NUnitを用いたネイティブ・コードのテスト方法について解説します。

NUnitのインストールと試運転

 NUnitおよびNUnitに関する情報は、下記のサイトより入手できます。

 このサイトの上部にある[DOWNLOAD]から.NET Framework 2.0向けの最新版NUnitをダウンロードしてください(2007年9月時点での最新はversion 2.4.3です)。本稿では「NUnit-2.4.3-net-2.0.msi」を利用します。これをダウンロード、実行すればインストールが始まります。インストール先は適当なディレクトリを指定してください。インストールが完了すると、デスクトップにNUnitアイコンが追加されます。

デスクトップに追加されたNUnitアイコン

 それではお試しにC#で簡単なアセンブリを作成し、NUnitでテストしてみましょう。

NUnitの試運転:テスト対象クラスの作成

 VS 2005で「NUnitDemo」という名前の「空のソリューション」を作成し、その中にC#の「クラス ライブラリ」のプロジェクトとして「CSCounter」を用意します。

 CSCounterプロジェクト内に自動生成された「Class1.cs」ファイルの名前を「Counter.cs」に書き換え、そのファイルに前回C++で実装したテスト対象である「Counterクラス」(=カウントを数える機能を持つクラス)のC#版を実装します。各メソッドの中身はコンパイル・エラーとならないハリボテとしておきます。

namespace NUnitDemo
{
  public class Counter
  {
    private int count_;
    public Counter() {}
    public int get() { return 0; }
    public void incr() { }
    public void clear() { }
  }
}
C#で作成したCounterクラス(Counter.cs)

 このアセンブリをテストするプロジェクトを作りましょう。

NUnitの試運転:テスト用プロジェクトの作成

 ソリューションにC#クラス・ライブラリのプロジェクト「CSCounterTest」を追加します。

 そして、CSCounterTestプロジェクトに対して「nunit.framework.dll」(=NUnitの基本アセンブリ)への参照を追加します。NUnitが正しくインストールされていれば、次の画面のように[参照の追加]ダイアログの[.NET]タブのアセンブリ一覧に「nunit.framework」が見つかります。

「nunit.framework.dll」アセンブリへの参照の追加
[ソリューション エクスプローラ]上で[CSCounterTest]プロジェクトの項目を右クリックして、表示されるコンテキスト・メニューから[参照の追加]を選択する。すると、このような[参照の追加]ダイアログが表示されるので[.NET]タブを開き、アセンブリ一覧の中から「nunit.framework」([バージョン]は「2.4.3.0」)を選択して[OK]ボタンをクリックする。

 さらにテスト対象であるCSCounterプロジェクトへの参照も追加しておきます。

「CSCounter」プロジェクトへの参照の追加
[参照の追加]ダイアログで[プロジェクト]タブを開き、プロジェクト一覧の中から「CSCounter」を選択して[OK]ボタンをクリックする。

 それでは、さっそくテストを書きましょう。


 INDEX
  [連載]C++開発者のための単体テスト入門
  第3回 C++アプリケーションの効率的なテスト手法(NUnit編)
  1.NUnitのインストール
    2.NUnitの試運転
    3.C++ネイティブ・コードをテストする
    4.NUnitテストの制限+おまけ:ReSharper UnitRun

インデックス・ページヘ  「C++開発者のための単体テスト入門」

ホワイトペーパーTechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?