Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Jtest Mockito PowerMock をサポートしています。

...

ここではコンストラクターをモックにする方法を確認います。

・事前準備

PowerMock を利用できるように設定します。

...

  1. メニューの [Parasoft] > [設定] を選択して設定ダイアログを開きます。

...

  1. .[Parasoft] > [単体テスト アシスタント] > [モック] を選択します。

...

  1. 以下の設定になっていることを確認します。※赤字が設定する値となります

...

● “有効チェックボックス : ON

...

● “モックにヘルパーメソッドを使用チェックボックス : ON

...

● フレームワークで “PowerMock with Mockito” ラジオボタン : ON

...

Image Added

・テスト対象メソッド確認

Order#setDate メソッドをテストするメソッドを作成します。
Order#setDate メソッドは Util#checkDateFormat メソッドを呼び出します。

Image Modified

Util#checkDateFormat メソッドは static メソッドです。今回はこの Util#checkDateFormat をモックにします。
Util#checkDateFormat では入力された文字列が日付のフォーマット “yyyy/MM/dd” に一致するかをチェックします。
一致する場合は、true を返却し、一致しない場合は false を返却します。

Image Modified

・テストメソッド作成

...

  1. ソースコードペインで Order#setDate メソッドを開きます。

...

  1. 単体テストアシスタントビューで Image Modifiedをクリックします。

...


  1. Image Added

...


  1. setDate(String) メソッドの引数を入力します。次のコードの “” “12345” に変更します。

    Code Block
    themeEclipse
    変更前

...

  1. 							変更後
    String date = "";		⇒		String date = "12345";

...


  1. アサーションを追加します。

    Code Block
    themeEclipse
    追加するアサーション

...

  1. 
    assertEquals("", underTest.getDate());

    【補足】

    テストデータの “12345” Util#checkDateFormat でチェックする日付フォーマット (yyyy/MM/dd) とは一致せず false が戻されます。
    テスト対象の Order#setDate メソッドでは Util#checkDateFormat の戻り値が false の場合が変数 date に空文字を格納するため、アサーションは Order#getDate メソッドの戻り値が空文字であることを期待します。

...


  1. 単体テストアシスタントビューで Image Modified をクリックし、テストケースが成功することを確認します。

    Image Modified

...

・staticメソッドをモックにする

static なメソッドである Util#checkDateFormat をモックにして必ず “true” を戻すようなテストを実行します。

...

  1. 単体テストアシスタントビューの実行フローからsetDate(String) > Util.checkDateFormat(String) を右クリックし、 Image Modifiedをクリックします。

...


  1. Image Added

...


  1. 追加されたモックを変更します。

    Code Block
    themeEclipse
    追加されたモック

...

  1. 
    boolean checkDateFormatResult = false; // UTA: デフォルト値

...

  1. 
    doReturn(checkDateFormatResult).when(Util.class);

    必ず true を返すように変更します。

    Code Block
    themeEclipse
    変更後のモック

...

  1. 
    boolean checkDateFormatResult = true; // UTA: デフォルト値

...

  1. 
    doReturn(checkDateFormatResult).when(Util.class);

...


  1. 単体テストアシスタントビューで Image Modifiedをクリックし、テストケースが失敗することを確認します。

...


  1. Image Added

    【補足】
    テスト対象の Order#setDate メソッドでは Util#checkDateFormat の戻り値が trueの場合が変数 date に渡されたデータを格納するため、date にテストデータの “12345” が格納されます。
    アサーションは Order#getDate メソッドの戻り値が空文字であることを期待しますが実際には “12345” が格納されているためアサーションエラーが発生してテストケースが失敗しました。

...


  1. 単体テストアシスタントビューで Util#checkDateFormat がモックに置き換わったことを確認します。

...


  1. Image Added