ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

JMockit

テスト対象クラス内でnewで生成されている依存オブジェクトをモックする

テスト対象クラス(DateUtil.java) import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { public static String getCurrentDate() { Date d = new Date(); return new SimpleDateFormat("yyyy/MM/dd").format(d); } } テス…

Verifications/FullVerificationsの違い

FullVerifications モックオブジェクト/クラスのリプレイフェーズでの呼び出し全てを検証する Verifications モックオブジェクト/クラスのリプレイフェーズでの呼び出しについて、Verificationブロックで指定したもののみ検証する テスト対象クラス(Hello.j…

Expectations/Verificationsの違い

Expectations 記録フェーズで使う。モックの振る舞い記録と、リプレイが行われたことの検証に使われる。 Verifications 検証フェーズで使う。行われたリプレイの検証に使われる。Expectationsと違い、モックの振る舞い記録ができない。(result変数への代入…

Expectations/NonStrictExpectations/StrictExpectationsの違い

Expectations 最低一回は呼ばれる、順番は関係ない NonStrictExpectations 回数、順番関係なし StrictExpectations 呼び出し回数と順番がマッチしないとダメ ということですね。 テスト対象クラス(Hello.java) public class Hello { public static String …

@Mocked/@Injectableの違い

@Injectable 特定のインスタンスのみモックする @Mocked 全てのインスタンスをモックする テスト対象クラス(Hello.java) public class Hello { public static String helloStatic() { return "helloStatic()"; } public String helloInstance1() { return …

@Mocked/@Capturingの違い

@Capturing テスト実行の間にJVMによってロードされる追加のクラスについてもモックする @Mocked テスト実行の間にJVMによってロードされる追加のクラスはモックしない テスト対象クラス(Hello.java) import java.io.File; import java.io.FileFilter; pub…

JMockitでprivate static finalな定数を書き換える

設定ファイルにするまでもないものは定数で定義したりしますが、違う値でテストしたいときがあります。 jmockitを使うと(使わなくても)簡単にできるのですが、一点ワナがあったのでメモしておきます。 テスト対象クラス(Hello.java) public class Hello …