SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Javaの単体テストでランダムなデータを活用する

QaRandomizerを利用し、ランダムデータを用いた単体テストを実行

 次のリスト3は、リスト2のrandomSetterGetterAddressTest()で生成されたデータの例です。

リスト3 QaRandomizerが生成した名前と住所データの例
Akira Morrisroe, 38 Roosevelt St. Suite 52 SAINT PAUL, KS 66771
Kaoru Sole, 798 Olympic Ave. Floor 87 WASHTA, IA 51061
Irwin Gugliotti, 372 Cherry Dr. Apt. 31 SMITHFIELD, ME 04978
Cheryl Edsall, 865 Elm Dr. Apt. 73 SHANDON, CA 93461
Sharayn Zitello, 103 Olympic Blvd. Room 15 ZEPHYR, TX 76890
Aleck Hermes, 794 Main Dr. MailStop 39 VERONA, WI 53593
Ossie Morrow, 250 Pine St. Room 86 AMA, LA 70031
Milos Calderone, 591 Spruce St. Desk 34 SAINT PETERSBURG, FL 33701
Laurie Brocklehurst, 898 Orange Ct. Apt. 68 GREENWICH, NY 12834
Joleen Jarvis, 538 Washington Dr. Apt. 40 PHOENIX, AZ 85010

 簡単なAddressオブジェクトといえども、その正常動作の確認用としてリスト2のようなコードを作成しておけば、実装したコードが意図したとおりに動作するという安心感は高まります。ハードコーディングは使っていませんし、テストの繰り返しのたびにそれぞれ異なるデータを使っているからです。そして、どんなデータでも処理できるという安心感をいっそう高めたいと思ったら、テストの実行回数を増やせば大丈夫です。

 ここまでにお見せした以外にも、QaRandomizerには多彩なメリットがあります。以降のセクションでは、QaRandomizerの機能を紹介していきます。使えそうなものがあったら、ぜひ利用してみてください。

QaRandomizerの機能

 次の表1は、QaRandomizerが持つメソッドをまとめたものです。前述のとおり、ファーストネーム、ラストネーム、フルネーム、住所、メールアドレスのデータをランダムに生成するメソッドがあります。また、ランダムデータの抽出元となる内部データのリストを返すメソッドや、特定の型のリストからランダムな項目を返すメソッドもあります。

表1 QaRandomizerクラスのメソッド
QaRandomizerクラスのメソッド 機能
RandomAddress getAddress() RandomAddressオブジェクトのインスタンスを取得する
protected RandomAddress getAddressFromZipCode(java.lang.String zipcode) 郵便番号を基に、対応する住所を取得する(※編集部注)
protected java.util.Set getAddressTwoTypeList() "suite"、"room"、"mailstop"など、AddressTwoの生成に使用される文字列のリストを取得する
protected java.util.Random getClassRandom() Randomオブジェクトのクラスインスタンスを取得するアクセサ
java.lang.String getComplexString(int maxLength) ランダムな複合文字列を取得する。複合文字列とは、英数字と@%^$*,などの記号で構成される文字列で、例えば"wDr56$*c0Q"など
java.lang.String getEmailAddress() ランダムなメールアドレスを取得する
java.lang.String getExtendedString(int maxLength) ランダムな拡張文字列を取得する。拡張文字列とは、英文字(大文字と小文字)および@%^$*,などの記号で構成される文字列で、例えば"qwGfdiuR$#"など
java.lang.String getFirstName() ランダムなファーストネーム(名)を取得する
protected java.util.Set getFirstNamesList() ランダムなファーストネーム(名)の抽出元となる内部リストを取得する
java.lang.StringgetFullName() ランダムなフルネーム(氏名)を取得する
protected com.edmunds.training.utilities.qarandomizer.QaRandomizerHelper getHelper() QaRandomizerHelperクラスを取得する。このクラスを使って、住所(郵便番号、ファーストネーム、ラストネーム)のデータを記述した内部XMLファイルにアクセスできる
static QaRandomizer getInstance() QaRandomizerのシングルトンインスタンスを取得する
java.lang.String getLastName() ランダムなラストネーム(姓)を取得する
protected java.util.Set getLastNamesList() ランダムなラストネーム(姓)の抽出元となる内部リストを取得する
getRandomItem(java.util.Set set) 型TのSetからランダムな項目を取得できる
java.lang.String getSimpleString(int maxLength) ランダムな単純文字列を取得する。単純文字列とは、英文字(大文字と小文字)で構成される文字列
java.lang.String getSSN() ddd-dd-ddddの形式でランダムな社会保障番号を取得する
protected java.util.Set getStreetNameList() 内部定義された値のセットを基にして、街路名のリストを取得する
protected java.util.Set getStreetTypes() "St."、"Ave"、"Blvd"など、街路名の種類を格納したセットを取得する
java.lang.String getZipCode() ランダムな郵便番号を取得する
protected java.util.Set getZipCodesList() ランダムな郵便番号の抽出元となる内部リストを取得する
※編集部注

 元記事ではこの欄が空白になっていたため、内容を補足しました。

 以降のセクションでは、QaRandomizerの各機能を詳しく見ていきます。

ランダムな名前の取得

 QaRandomizerには、ランダムな名前を利用するためのメソッドが3つあります。

  • getFirstName()
  • getLastName()
  • getFullName()

 前述のリスト2では、これらのメソッドを使用して、QaRandomizerプロジェクトにリソースファイルとして組み込まれているXMLファイル内のファーストネーム(名)とラストネーム(姓)のリストから、ランダムなファーストネーム、ラストネーム、フルネームを返しています。

 次の図2は、ファーストネーム、ラストネーム、郵便番号のそれぞれのXMLファイルをQaRandomizerのコードで処理する状況のイメージです。QaRandomizerはdom4jを使ってXMLファイルをJavaのDOMオブジェクトに変換します。

図2 QaRandomizerでのXMLからJavaへの変換:QaRandomizerはdom4jを使ってXMLファイルをJavaのDOMオブジェクトに変換する
図2 QaRandomizerでのXMLからJavaへの変換:QaRandomizerはdom4jを使ってXMLファイルをJavaのDOMオブジェクトに変換する

 getFirstNamesList()メソッドとgetLastNamesList()メソッドを使用すると、ファーストネームとラストネームをまとめて取得できます。

次のページ
RandomAddressオブジェクトの使い方

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Bob Reselman(Bob Reselman)

Edmunds Incのシニアテクニカルライター兼テクニカルエディター。Edmunds Inc.は、多彩な情報と高い可用性を誇る、最先端のJavaベースの各種自動車情報Webサイトを運営する大手パブリッシャーである。http://www.edmunds.com/およびhttp://www.insid...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4908 2010/03/03 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー