・テストメソッド作成
Util#checkUserData メソッドをテストするメソッドを作成します。
...
コンソールペインで Util#checkUserData メソッドを開きます。
...
Util#checkUserData メソッドは User クラスの引数を持つメソッドのためテストの実行には User クラスを構成する要素をテストデータとして用意する必要があります。
Userクラスは以下の要素にそれぞれの getter/setter メソッドを持つ構成です。Code Block theme Eclipse /**
...
* ユーザー名を保存します。
...
*/
...
private String name;
...
/**
...
/**
* ユーザーの住所を保存します。
*/
private String address;
/**
* ユーザーのメールアドレスを保存します。
*/
private String email;
/**
* ユーザーの電話番号を保存します。
*/
private String phone;
...
* ユーザーIDを保存します。 */ private String userId; /** * ユーザーの住所を保存します。 */ private String address; /** * ユーザーのメールアドレスを保存します。 */ private String email; /** * ユーザーの電話番号を保存します。 */ private String phone;
ソースコードペインで Util#checkUserData メソッドを選択し、単体テストアシスタントビューで をクリックします。
...
...
- 起動した設定画面で以下の設定を確認します。※赤字が設定する値となります
...
● テストケースの追加:パラメータライズ
...
作成するテストケースの形式をラジオボタンで選択します。
...
○ 通常:通常のテストケースを作成します。
...
○ パラメータライズ:パラメータライズされたテストケースを作成します。
...
○ Combined:異なるデータでテストした場合に結果が変わるメソッドの場合にパラメータライズされたテストケースを作成します。
...
結果が変わらないメソッドの場合は通常のテストケースを作成します。
...
● 1 つのテストケースに対して作成されるパラメータセットの最大数(デフォルト5):3
パラメータライズテストケースの生成時に Jtest が自動で生成するテストデータの最大個数を定義します。
テストデータはパラメータの型ごとに以下の画面から設定することができます。1) メニューの [Parasoft] > [設定] を選択して設定ダイアログを開きます。
2) [Parasoft] > [単体テスト アシスタント] を選択します。
3) パラメータライズされたテストタイプ で ”パラメータライズの設定” を押下します。
...
4) 起動する “パラメータライズの設定” 画面で型ごとにデフォルトのテストデータとして使用するデータを登録します。
(本チュートリアルではデフォルトを変更せず実行してください。)
...
...
● データの生成先:CSV
...
パラメータライズテストケースの生成時にテストデータを、以下のどちらに定義するかをリストボックスから選択します。
...
(本チュートリアルでは CSV を選択してください。)
○ Code : ソースコード内にテストデータを定義します。
○ CSV : プロジェクトに CSV ファイルを追加し、CSV ファイル内にテストデータを定義します。
...
● 作成されたテストの実行タイムアウト(ミリ秒):チェックボックスをOFF
...
一連のテストを実行するための制限時間(ミリ秒単位)を指定します。
...
制限時間を超えるとテスト実行が停止し、テストは失敗します。
設定画面例)
...
- 設定画面で “OK” ボタンを押下します。
...
- UTAプロジェクトのtestsフォルダにUtilParameterizedTest.jjavaとUtilParameterizedTest_testCheckUserData_parameters.csvが作成されたことを確認します。
...
...
作成されたテストメソッドテンプレートの内容を確認します。(テストメソッド名は連番で付けられるため本チュートリアルの実施順によって異なります。)
Code Block
...
theme Eclipse @Test // @FileParameters アノテーションによるテストデータ定義用CSVファイル指定 @FileParameters(value = "classpath:jp/co/tmx/
...
UtilParameterizedTest_testCheckUserData_parameters.csv", mapper = CsvWithHeaderMapper.class, encoding = "UTF-8")
...
public void testCheckUserData( // CSVファイルのデータ項目に紐づいたデータを取り込むためのパラメータ @Nullable(nullIdentifier = "<NULL>") String getAddressResult,
...
@Nullable(nullIdentifier = "<NULL>") String getEmailResult,
...
@Nullable(nullIdentifier = "<NULL>") String getNameResult,
...
@Nullable(nullIdentifier = "<NULL>") String getPhoneResult,
...
@Nullable(nullIdentifier = "<NULL>") String getUserIdResult
...
) throws Throwable
...
{ Util underTest = new Util();
...
User user = mock(User.class);
...
// 引数の User クラスをモック化 // User#getAddress 実行時に戻り値としてCSV から取得したデータを格納。 // 以降、User クラスの全要素数分実施。 when(user.getAddress()).thenReturn(getAddressResult);
...
when(user.getEmail()).thenReturn(getEmailResult);
...
when(user.getName()).thenReturn(getNameResult);
...
when(user.getPhone()).thenReturn(getPhoneResult);
...
when(user.getUserId()).thenReturn(getUserIdResult);
...
boolean result = underTest.checkUserData(user);
...
// assertEquals(expected, result);
...
…引数の User クラスをモック化
…User#getAddress 実行時に戻り値としてCSV から取得したデータを格納。
以降、User クラスの全要素数分実施。
…テスト対象メソッドの呼び出しと戻り値の格納
...
// テスト対象メソッドの呼び出しと戻り値の格納 }
- 作成された CSV ファイルの内容を確認します。
ファイルの構成は以下の通りです。
...
- ● 1行目:テストデータ項目名
● 2~4行目:自動で作成されたテストデータ
テストケースの生成時に、パラメータセットの最大数を ‘3’ に設定したため 3 テストケース分のテストデータが自動で作成されました。
...
1行目の項目名はUtilParameterizedTest#testCheckUserData メソッドの引数名と紐づきます。
・テストデータ編集
作成されたテストデータ、テストメソッドテンプレートにはアサーション情報が定義されていないため、テストケースごとに期待値となるデータを追加するための設定を行います。
...
- CSV ファイルに期待値用の項目を追加します。
...
- CSV ファイルを Excel
...
- 等で開き、F列(6項目目) に以下のデータ項目名 ‘expected’ を追加します。
...
...
- CSV ファイルに期待値データとテストデータを登録します。
...
- 手順 1 で追加した expected
...
- 列にテストデータを追加します。2~4行目のテストケースではいずれかの項目に <NULL> が設定されている場合 Util#checkUserData の戻り値は false になります。
...
- 下記のテストデータでは2,4行目が
...
- false、 3 行目は true を入力します。
...
...
任意のテストケースを追加します。
...
- 5行目に A~E列(1~5列目) 全ての項目に何らかの文字列を入力し、F列 には true を入力して任意のテストケースを追加します。
...
...
変更した CSV ファイルを保存します。
...
UtilParameterizedTest#testCheckUserData メソッドに期待値用の引数を追加します。
...
メソッド引数を以下のように変更します。
Code Block theme Eclipse 変更前
...
public void testCheckUserData(
...
@Nullable(nullIdentifier = "<NULL>") String getAddressResult,
...
@Nullable(nullIdentifier = "<NULL>") String getEmailResult,
...
@Nullable(nullIdentifier = "<NULL>") String getNameResult,
...
@Nullable(nullIdentifier = "<NULL>") String getPhoneResult,
...
@Nullable(nullIdentifier = "<NULL>") String getUserIdResult
...
) throws Throwable
...
public void testCheckUserData(
...
{ ▼ 変更後 public void testCheckUserData( @Nullable(nullIdentifier = "<NULL>") String getAddressResult,
...
@Nullable(nullIdentifier = "<NULL>") String getEmailResult,
...
@Nullable(nullIdentifier = "<NULL>") String getNameResult,
...
@Nullable(nullIdentifier = "<NULL>") String getPhoneResult,
...
@Nullable(nullIdentifier = "<NULL>") String getUserIdResult,
...
4.UtilParameterizedTest#testCheckUserData メソッドのアサーションを有効化
UtilParameterizedTest#testCheckUserData メソッドでコメントアウトされているアサーションを有効化します。
...
boolean expected // boolean 型の引数をCSVファイルに追加した項目名と同じ変数名で追加 ) throws Throwable {
UtilParameterizedTest#testCheckUserData メソッドのアサーションを有効化
UtilParameterizedTest#testCheckUserData メソッドでコメントアウトされているアサーションを有効化します。Code Block theme Eclipse 変更前 // assertEquals(expected, result);
...
▼ 変更後 assertEquals(expected, result);
...
- 変更したテストクラスを保存し、プロジェクトのビルドが正常に行われることを確認します。
・テスト実行と結果確認
作成したテストメソッドを実行します。
ソースコードペインでUtilParameterizedTes#testCheckUserData メソッドを選択し、単体テストアシスタントビューで を押下します。
...
実行後、JUnit ビューで 4 テストケースが実行されていることを確認します。
...
単体テストアシスタントビューと変数ビューを使って、実行したテストケースと入力されたテストデータが正しく渡されていることを確認します。
単体テストアシスタントビューで任意のテストケースを展開し、
UtilParameterized.testCheckUserData (String,String,String,String,String,boolean) を選択すると変数タブにCSVファイルから取得したテストデータの値が表示されます。
...
更にテストケースの実行フローを展開するとモックに置き換わった User クラスの各メソッドが呼び出されたときに戻されるデータを確認することができます。
...