Versions Compared

Key

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

・テストメソッド作成

Util#checkUserData メソッドをテストするメソッドを作成します。

...

  1. コンソールペインで Util#checkUserData メソッドを開きます。

...


  1. Image Added

    Util#checkUserData メソッドは User クラスの引数を持つメソッドのためテストの実行には User クラスを構成する要素をテストデータとして用意する必要があります。
    Userクラスは以下の要素にそれぞれの getter/setter メソッドを持つ構成です。

    Code Block
    themeEclipse
    /**

...

  1. 
    * ユーザー名を保存します。

...

  1. 
     */

...

  1. 
    private String name;

...

  1. 
    
    /**

...

 * ユーザーIDを保存します。

 */

private String userId;

/**

 * ユーザーの住所を保存します。

 */

private String address;

/**

 * ユーザーのメールアドレスを保存します。

 */

private String email;

/**

 * ユーザーの電話番号を保存します。

 */

private String phone;

...

  1. 
     * ユーザーIDを保存します。
     */
    private String userId;
    
    /**
     * ユーザーの住所を保存します。
     */
    private String address;
    
    /**
     * ユーザーのメールアドレスを保存します。
     */
    private String email;
    
    /**
     * ユーザーの電話番号を保存します。
     */
    private String phone;


  2. ソースコードペインで Util#checkUserData メソッドを選択し、単体テストアシスタントビューで Image Modifiedをクリックします。

...


  1. Image Added

...


  1. 起動した設定画面で以下の設定を確認します。※赤字が設定する値となります

...


  1.    ● テストケースの追加:パラメータライズ

...

  1. 作成するテストケースの形式をラジオボタンで選択します。

...

  1. ○ 通常:通常のテストケースを作成します。

...

  1. ○ パラメータライズ:パラメータライズされたテストケースを作成します。

...

  1. ○ Cobined:異なるデータでテストした場合に結果が変わるメソッドの場合にパラメータライズされたテストケースを作成します。

...

  1. 結果が変わらないメソッドの場合は通常のテストケースを作成します。

...

  1.    ● 1 つのテストケースに対して作成されるパラメータセットの最大数(デフォルト5)3

    パラメータライズテストケースの生成時に Jtest が自動で生成するテストデータの最大個数を定義します。
    テストデータはパラメータの型ごとに以下の画面から設定することができます。

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

       2) [Parasoft] > [単体テスト アシスタント] を選択します。

       3) パラメータライズされたテストタイプ で パラメータライズの設定を押下します。

        

...

  1. Image Added

       4) 起動する パラメータライズの設定画面で型ごとにデフォルトのテストデータとして使用するデータを登録します。
        (本チュートリアルではデフォルトを変更せず実行してください。)

        

...

  1. Image Added

...

  1.    ● データの生成先:CSV

...

  1. パラメータライズテストケースの生成時にテストデータを、以下のどちらに定義するかをリストボックスから選択します。

...

  1. (本チュートリアルでは CSV を選択してください。)

       ○ Code : ソースコード内にテストデータを定義します。

       ○ CSV : プロジェクトに CSV ファイルを追加し、CSV ファイル内にテストデータを定義します。

...

  1.    ● 作成されたテストの実行タイムアウト(ミリ秒):チェックボックスをOFF

...

  1. 一連のテストを実行するための制限時間(ミリ秒単位)を指定します。

...

  1. 制限時間を超えるとテスト実行が停止し、テストは失敗します。

    設定画面例)

    Image Modified

...


  1. 設定画面で “OK” ボタンを押下します。

...

  1. UTAプロジェクトのtestsフォルダにUtilParameterizedTest.jjavaとUtilParameterizedTest_testCheckUserData_parameters.csvが作成されたことを確認します。

...


  1. Image Added

...


  1. 作成されたテストメソッドテンプレートの内容を確認します。(テストメソッド名は連番で付けられるため本チュートリアルの実施順によって異なります。)

...


  1. Code Block
    themeEclipse
    @Test								// @FileParameters アノテーションによるテストデータ定義用CSVファイル指定
    @FileParameters(value = "classpath:jp/co/tmx/

...

  1. 
    UtilParameterizedTest_testCheckUserData_parameters.csv", mapper = CsvWithHeaderMapper.class, encoding = "UTF-8")

...

  1. 
    public void testCheckUserData(		// CSVファイルのデータ項目に紐づいたデータを取り込むためのパラメータ
    	@Nullable(nullIdentifier = "<NULL>") String getAddressResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getEmailResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getNameResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getPhoneResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getUserIdResult

...

  1. 
    ) throws Throwable

...

  1.  {
    	Util underTest = new Util();

...

  1. 
    	User user = mock(User.class);

...

  1. 		// 引数の User クラスをモック化
    
    	// User#getAddress 実行時に戻り値としてCSV から取得したデータを格納。
    	// 以降、User クラスの全要素数分実施。
    	when(user.getAddress()).thenReturn(getAddressResult);

...

  1. 	
    															
    	when(user.getEmail()).thenReturn(getEmailResult);

...

  1. 
    
    	when(user.getName()).thenReturn(getNameResult);

...

  1. 
    
    	when(user.getPhone()).thenReturn(getPhoneResult);

...

  1. 
    
    	when(user.getUserId()).thenReturn(getUserIdResult);

...

  1. 
    
    	boolean result = underTest.checkUserData(user);

...

  1. 
    
    	// assertEquals(expected, result);

...

…引数の User クラスを

モック化

User#getAddress 実行時に戻り値としてCSV から取得したデータを格納。

以降、User クラスの全要素数分実施。

…テスト対象メソッドの呼び出しと戻り値の格納

...

  1. 	// テスト対象メソッドの呼び出しと戻り値の格納
    
    }


  2. 作成された CSV ファイルの内容を確認します。

    Image Modified

    ファイルの構成は以下の通りです。

...

  1.   ● 1行目:テストデータ項目名
      ● 2~4行目:自動で作成されたテストデータ

    テストケースの生成時に、パラメータセットの最大数を ‘3’ に設定したため 3 テストケース分のテストデータが自動で作成されました。

...


  1. 1行目の項目名はUtilParameterizedTest#testCheckUserData メソッドの引数名と紐づきます。


・テストデータ編集

作成されたテストデータ、テストメソッドテンプレートにはアサーション情報が定義されていないため、テストケースごとに期待値となるデータを追加するための設定を行います。

...

  1. CSV ファイルに期待値用の項目を追加します。

...

  1. CSV ファイルを Excel

...

  1. 等で開き、F列(6項目目) に以下のデータ項目名 ‘expected’ を追加します。

...


  1. Image Added

...


  1. CSV ファイルに期待値データとテストデータを登録します。

...

  1. 手順 1 で追加した expected

...

  1. 列にテストデータを追加します。2~4行目のテストケースではいずれかの項目に <NULL> が設定されている場合 Util#checkUserData の戻り値は false になります。

...

  1. 下記のテストデータでは2,4行目が

...

  1. false、 3 行目は true を入力します。

...


  1. Image Added

...


  1. 任意のテストケースを追加します。

...

  1. 5行目に A~E列(1~5列目) 全ての項目に何らかの文字列を入力し、F列 には true を入力して任意のテストケースを追加します。

...


  1. Image Added

...


  1. 変更した CSV ファイルを保存します。

...


  1. UtilParameterizedTest#testCheckUserData メソッドに期待値用の引数を追加します。

...

  1. メソッド引数を以下のように変更します。

    Code Block
    themeEclipse
    変更前

...

  1. 
    public void testCheckUserData(

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getAddressResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getEmailResult, 
    	@Nullable(nullIdentifier = "<NULL>") String getNameResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getPhoneResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getUserIdResult

...

  1. 
    ) throws Throwable

...

public void testCheckUserData(

  1.  {
    
    							▼
    変更後
    public void testCheckUserData(
    	@Nullable(nullIdentifier = "<NULL>") String getAddressResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getEmailResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getNameResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getPhoneResult,

...

  1. 
    	@Nullable(nullIdentifier = "<NULL>") String getUserIdResult,

...

  1. 
    
    	boolean

...

4.UtilParameterizedTest#testCheckUserData メソッドのアサーションを有効化

   UtilParameterizedTest#testCheckUserData メソッドでコメントアウトされているアサーションを有効化します。

...

  1.  expected		// boolean 型の引数をCSVファイルに追加した項目名と同じ変数名で追加
    
    ) throws Throwable {


  2. UtilParameterizedTest#testCheckUserData メソッドのアサーションを有効化
    UtilParameterizedTest#testCheckUserData メソッドでコメントアウトされているアサーションを有効化します。

    Code Block
    themeEclipse
    変更前
    // assertEquals(expected, result);

...

  1. 
    				▼
    変更後
    assertEquals(expected, result);

...


  1. 変更したテストクラスを保存し、プロジェクトのビルドが正常に行われることを確認します。

・テスト実行と結果確認

作成したテストメソッドを実行します。
ソースコードペインでUtilParameterizedTes#testCheckUserData メソッドを選択し、単体テストアシスタントビューで  Image Modifiedを押下します。

...


Image Added

実行後、JUnit ビューで 4 テストケースが実行されていることを確認します。

...


Image Added

単体テストアシスタントビューと変数ビューを使って、実行したテストケースと入力されたテストデータが正しく渡されていることを確認します。
単体テストアシスタントビューで任意のテストケースを展開し、
UtilParameterized.testCheckUserData (String,String,String,String,String,boolean) を選択すると変数タブにCSVファイルから取得したテストデータの値が表示されます。

...


Image Added

更にテストケースの実行フローを展開するとモックに置き換わった User クラスの各メソッドが呼び出されたときに戻されるデータを確認することができます。

...


Image Added