InfoQ

News

JavaとFlexの両方で使えるモックフレームワーク

作者 Craig Wickesser , 翻訳者 金森 諭 投稿日 2009年7月12日 午後3時0分

コミュニティ
Java
トピック
ユニットテスト,
リリース,
RIA
タグ
Flex,
Java SE,
TDD,
Python

原文(投稿日:2009/7/7)へのリンク

InfoQは先日バージョン1.8(rc2)がリリースされたMockitoフレームワークのプロジェクトオーナーであるSzczepan Faber氏と話す機会を得た。

注:1.8はまだ最終版でないがRC2ですでに同等のものであることを氏は確約してくれており、すぐにでも最終版が出ることが期待される。

InfoQ:1.8のリリースでディベロッパたちが期待できることは何でしょう?

1.8では大きな変更はありませんが、ディベロッパの仕事を簡単にしてくれる便利な機能が2つ含まれています。まず、より一層のアサーションをおこなうために引数を取得するAPIがあります。これによりメソッドのパラメータの検証がより効果的におこなえます。
そして、ユニットテストを書く際に振舞駆動の開発スタイルをスムーズにおこなえるよう、スタブAPIにエイリアスを充てることにしました。つまり、「・・・について」「・・・の時」「・・・ならば」というコメントを書くテストでは、given().willReturn()とテストコードを書けるのです(例:given(list.getItemAt(1)).willReturn("abc")と書くと、それ以降にlist.getItemAt(1)で得られる値は"abc"となる)。

今回のリリースがMockitoにもたらしたのは、要するに実用的になった部分的モックです。これが当を得た機能であるか、私たちは長い時間をかけて話し合いました。そして実用的なケースがあることを最終的に確認しました。すべての機能のリストはこちらに掲載しています。http://code.google.com/p/mockito/wiki/ReleaseNotes

InfoQ:ロードマップでは1.8の後に何があるのでしょうか。

私はMockitoの担う役割は1.0で備わったと考えているのですが、それでも新しいアイディアや改善点は次々浮かんできます。Mockitoのメーリングリストでフィードバックや提案をしてくれるユーザにはとても感謝しています。将来リリースされる機能について明確に言うのは難しいですが、APIをシンプルに保ちつづけるよう努めるのは確かです。引き続きエラーフィードバックについて改善をおこない、TDD(テスト駆動開発)のサイクルを素早くスムーズなものにしていきます。

InfoQ:先頃Flex向けにもMockito の名前をもった新しいプロジェクトが立ち上げられました。これはMockitoのオフィシャルなサブプロジェクトなのですか?

mockito-flexはまったく違う言語のものなのでサブプロジェクトとはいえません。しかしオフィシャルコラボレーションと言っていただいてもいいと思います。私とKrzysztof Karczmarczyk氏がタッグを組んで実装をおこなっていますからね。Kryzsztofがmockito-flexのメインページの情報を更新してくれていると思います。

InfoQ:Mockitoを使い始めたり、幅広くある機能をど使えばいいかを知るのに良い資料を教えてもらえますか。

モックオブジェクトに関する一般的なチュートリアルはどれもMockitoのコンセプトを理解するのに役立ちます。Brett Schchert氏によるMockitoのチュートリアルもあります。特定の機能については、javadocに書かれた実際に動かせるコードサンプルを含んだすべてのドキュメントが役立ちます。私たちがすべてのドキュメントをjavadoc化しているのはmockito.orgのウェブページにある情報と一貫性を保つようにしたいと考えているためです。また、IDEからオフライン時でもずべてのドキュメントを参照できるようにしておくと便利です。

最初にMockitoの機能を学習するにはMockitoクラスのjavadocをスタート地点にするのがいいでしょう。

mockito-flexの現在のバージョンは1.0で次のような特徴を備えている。

  • メソッド呼び出し、およびプロパティへのアクセスの検証の支援
  • メソッド呼び出し、およびプロパティへのアクセスのスタブ作成支援
  • 基本的なmatcher、および新しいmatcherを作成するための拡張可能なAPI
  • FlexUnitとの連携
  • asmock-0.3ベース(バイトコード生成と低レベルの実行ハンドリングに関して)

最後に、もしあなたがPythonディベロッパであればmockito-pythonをご覧いただきたい。

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

アジャイルにおけるプロジェクトマネジャーの役割

この記事では最初に一般的に産業界でのプロジェクトマネージャーの役割について説明し、それから、アジャイルにおけるコーチ/ファシリィテーターの役割にあてはめてみます。

アレグザンダー祭りにて、James.O.Coplienが語るアジャイルとスクラムの源流とは

「パターン」と呼ばれる設計手法をご存知ですか?この建築の分野ではじまった設計の形式知化手法、および、使う人と作る人の対話のプロセスは、私たちソフトウェアの世界に援用されて1995年に「デザインパターン」という書籍で注目を浴びました。さらに、アジャイルと呼ばれる開発手法には、ユーザーといっしょに対話をしながら設計を進める「パターン」の思想が脈々と引き継がれているのです。

仮想パネル:ソフトウェアアーキテクチャの文書化について

この仮想パネルでは、特に、アジャイルソフトウェア開発環境におけるソフトウェアアーキテクチャの文書化について、Len Bass氏、Grady Booch氏、Paulo Merson氏、Eoin Woods氏に話を聞いた。

HTTPSコネクションの最初の数ミリ秒

HTTPSコネクションを確立するとき、一体何が起こっているのだろう。この記事では安全なコネクションを準備するためにクライアントとサーバの間でどのようなデータの交換が行われているのか、バイトレベルまで詳細に分析する。

Modular Java:動的なモジュール化

Modular Javaシリーズの第3弾は、動的なモジュール化、どのようにバンドルのクラスが解決され、どのように生成され、消滅するのか、どのようにお互いに通信するのかについて、議論する。

分散バージョン管理システムの詳細なガイド

分散バージョン管理システムへの関心や採用は増え続けています。この記事では、分散バージョン管理システムのコンセプトを紹介し、git、Mercurial、Bazaarの3つについて詳しく見てみようと思います。

Modular Java:それは何なのか?

ここ数年にわたって、Javaのモジュール化は活発に議論され続けている話題である。いくつかのJSRによってJavaの進化におけるモジュール化の必要性が示されている。モジュール化の意味するところは何で、なぜそれを気にかけるべきなのだろうか?

Modular Java:静的なモジュール化

Modular Javaシリーズの第2弾は、静的なモジュール化、バンドルの作り方、OSGiのエンジンにそれらをインストールする方法、バンドル間の(バージョン付き)依存性の設定のしかたなどについて扱う。