junitでprivateメソッド(method)をテストする方法

junitでprivateメソッドのテストしたかったので調べてみました。

このクラスのisEmpty(String)を呼び出そうと思います。

package com.ctrltf.test.sample;

class MailAddressValidator {

	public boolean validate(String mailAddress) {
		return !isEmpty(mailAddress);
	}

	private boolean isEmpty(String mailAddress) {
		return (mailAddress == null || mailAddress.length() == 0);
	}
}

こんな感じてテストすることができました。
リフレクションを使って、privateメソッドを呼び出しています。

package com.ctrltf.test.sample;

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

import java.lang.reflect.Method;

import org.junit.BeforeClass;
import org.junit.Test;

public class PrivateMethodTest {

	@BeforeClass
	public static void prepare() {

	}

	@Test
	public void sample() {

		try {
			MailAddressValidator validator = new MailAddressValidator();

			Method method = MailAddressValidator.class.getDeclaredMethod(
				"isEmpty", // メソッド名(呼び出したいprivateメソッドの名称を指定する。)
				new Class[] {
					String.class // メソッドの引数の型
				}

			);
			method.setAccessible(true); // アクセス可能にする。
			assertThat(
				(Boolean)method.invoke(validator, "system@ctrltf.com"), // "system@ctrltf.com"はメソッドの引数です。
				is(Boolean.FALSE)
			);

		} catch (Exception e) {
		    e.printStackTrace();
		}
	}
}

お試しください。

windowsにrubyをインストールする。

windows7にインストールしようと思います。

インストーラで簡単にインストールして、正常にインストールされているかコマンドで
確認するところまでやってみたいと思います。

ruby最新版をダウンロードする。

1.以下URLを開く。

http://rubyinstaller.org/

2.[ダウンロード]ボタンを押す。

20130506_01

3.[Ruby 2.0.0-p0 (x64)]リンクを押す。

※64bit版をダウンロードしています。
 32bitOSをお使いの方は、上のRuby 2.0.0-p0を押してください。
 (分からない方)←64bitOSのwindosw7ではどちらも動くので)
クリックするとダウンロードが始まります。
20130506_02

rubyをインストールする。

1.ダウンロードしたファイルをダブルクリックしてインストーラーを起動する。

※rubyinstaller-2.0.0-p0-x64.exe 64bitの場合
 rubyinstaller-2.0.0-p0.exe 32bitの場合

2.インストール中の言語を選択する。

日本語のまま、[ok]を押す。
※外人さんはそれぞれで。でもこのページ見てるから日本語も分かるよねw
20130506_03

3.利用規約を確認する。

利用規約の確認が表示されるので確認した後、[同意する]を選択して[次へ]ボタンを押す。
20130506_04

4.インストールフォルダ・オプションを選択する。

インストールフォルダはそのままでもok。変更したい人は各々修正してください。
※私はC:\toolsの下などにしています。
あと、赤で囲っている[Rubyの実行ファイルへ環境変数PATHを設定する]を選択して
[インストール]ボタンを押す。
20130506_05

5.インストール完了です。

[完了]ボタンを押す。
20130506_06

続いて正常にインストールされているか確認します。

1.コマンドプロンプトを開く。

アクセサリ->コマンドプロンプト

2.コマンドプロンプトに以下を入力して[Enter]ボタンを押す。

ruby -v

以下のようにrubyのバージョンが表示されれば、
正常にインストールされています。
20130506_07

お疲れさまでした。

長嶋茂雄 巨人終身名誉監督、松井秀喜 選手、国民栄誉賞受賞おめでとうございます!そして松井選手、選手生活お疲れさまでした。

長嶋茂雄 巨人終身名誉監督、松井秀喜 選手。
この度は、国民栄誉賞受賞おめでとうございます。
長嶋監督は、もちろん昭和のスーパーヒーローとして
そして、引退後も巨人軍監督として
1野球ファンとして拝見し、思わずニコってしまうような
ユニークで人を楽しませるトークなど、野球を楽しませていただきまして
ありがとうございます。
どちらかというと私の親の世代のスーパーヒーローで
親からその勇姿を教えてもらいました。
親が子供の世代から、そのプレーに熱狂し楽しませていただき、ありがとうございます。
代わりましてお礼をさせていただきます。
そして、松井選手。私としては丁度野球が好きだった時期(今でも好きではありますが)に
松井選手が巨人の4番として活躍しておりました。
私は野球選手の中で松井選手が1番好きです。
その力強いバッティング、あとそれにも勝るような人間性にすごく魅力を感じ、
ファンになってしまいました。
正直、ニューヨークヤンキースに移籍してしまった後は
日本の野球を見なくなってしまいました。
しかし、海外での松井選手の活躍を見ると
すごくうれしく、日本人として誇らしい気分になりました。
今回のセレモニーでは、その師弟関係が
輝きを放っており、たいへん美しい光景でした。
長嶋監督の「松井くんもいっしょにこの賞をいただいたこと、厚く御礼申し上げます。」は、
愛弟子の受賞を喜び、師匠としてお礼をする姿。
そして、松井選手の「僕は(長嶋)監督の国民栄誉賞を、おそらく国民の誰よりもうれしく思っている」には、
美しき師弟関係が垣間見れ、心洗われたと思います。
あと、長嶋監督がバッター、松井選手がピッチャー、原監督がキャッチャーで
なんと安倍首相がアンパイアという始球式では
打てなかったことに悔しがる長嶋監督、コースが高くなってしまって頭を抱える松井選手、
おちゃめな動きをしている原監督、その状況に満面の笑みの安倍首相。
恐縮ながら、大人になっても子供の用にはじゃいで、楽しそうな姿に
こちらも思わずニコニコしてしまいました。
末筆ながら
この度は、長嶋茂雄 巨人終身名誉監督、松井秀喜 選手。
国民栄誉賞受賞おめでとございました。
そして松井選手、お疲れさまでした。
今後も1ファンとして、お2人のご活躍を楽しみにしております。