・テストメソッド作成
Util#checkUserData メソッドをテストするメソッドを作成します。
ソースコードペインで Util#checkUserData メソッドを開きます。
Util#checkUserData メソッドは User クラスの引数を持つメソッドのためテストの実行には User クラスを構成する要素をテストデータとして用意する必要があります。
Userクラスは以下の要素にそれぞれの getter/setter メソッドを持つ構成です。/** * ユーザー名を保存します。 */ private String name; /** * ユーザーIDを保存します。 */ private String userId; /** * ユーザーの住所を保存します。 */ private String address; /** * ユーザーのメールアドレスを保存します。 */ private String email; /** * ユーザーの電話番号を保存します。 */ private String phone;
ソースコードペインで Util#checkUserData(User) メソッドを選択し、単体テストアシスタントビューで をクリックします。
- 起動した設定画面で以下の設定を確認します。※赤字が設定する値となります
● テストケースの追加:パラメータライズ
作成するテストケースの形式をラジオボタンで選択します。
○ 通常:通常のテストケースを作成します。
○ パラメータライズ:パラメータライズされたテストケースを作成します。
○ Combined:異なるデータでテストした場合に結果が変わるメソッドの場合にパラメータライズされたテストケースを作成します。
結果が変わらないメソッドの場合は通常のテストケースを作成します。● 1 つのテストケースに対して作成されるパラメータセットの最大数(デフォルト5):1
パラメータライズテストケースの生成時に Jtest が自動で生成するテストデータの最大個数を定義します。
テストデータはパラメータの型ごとに以下の画面から設定することができます。1) メニューの [Parasoft] > [設定] を選択して設定ダイアログを開きます。
2) [Parasoft] > [単体テスト アシスタント] を選択します。
3) パラメータライズされたテストタイプ で ”パラメータライズの設定” を押下します。
4) 起動する “パラメータライズの設定” 画面で型ごとにデフォルトのテストデータとして使用するデータを登録します。
(本チュートリアルではデフォルトを変更せず実行してください。)● データの生成先:Code
パラメータライズテストケースの生成時にテストデータを、以下のどちらに定義するかをリストボックスから選択します。
○ Code : ソースコード内にテストデータを定義します。
○ CSV : プロジェクトに CSV ファイルを追加し、CSV ファイル内にテストデータを定義します。
● 作成されたテストの実行タイムアウト(ミリ秒):チェックボックスをOFF
一連のテストを実行するための制限時間(ミリ秒単位)を指定します。
制限時間を超えるとテスト実行が停止し、テストは失敗します。設定画面例)
- 設定画面で “OK” ボタンを押下します。
- UTA プロジェクトの tests フォルダにUtilParameterizedTest.javaが作成されたことを確認します。
(『CSV ファイルベースのテストメソッド作成』で既にテストクラスを作成している場合はメソッドが追加されます。 - UtilParameterizedTest.java には2つのテストメソッドテンプレートが作成されます。
(テストメソッド名は連番で付けられるため本チュートリアルの実施順によって異なります。)- testCheckUserData()
- testCheckUserData_Parameters()
・テストメソッドの確認
testCheckUserData() の確認
生成された testCheckUserData() を確認します。@Test // @Parameters アノテーションでテストデータを取得するメソッドを定義 @Parameters(method = "testCheckUserData_Parameters") public void testCheckUserData( // テストメソッド String getAddressResult, String getEmailResult, String getNameResult, String getPhoneResult, String getUserIdResult) throws Throwable { Util underTest = new Util(); // テストインスタンスの生成 User user = mock(User.class); // checkUserDataの引数 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); // getItemDB メソッドの呼び出し // assertEquals(expected, result); // getItemDB の戻り値のチェック用アサーションテンプレート }
testCheckUserData_Parameters() の確認
生成された testCheckUserData_Parameters() を確認します。@SuppressWarnings("unused") private static Object[][] testCheckUserData_Parameters() throws Throwable { // データメソッド // パラメータ: getAddressResult={0}, getEmailResult={1}, getNameResult={2}, getPhoneResult={3}, getUserIdResult={4} return new Object[][] { { "", "", " ", null, "01234567890…" }}; //テストデータを返却するコード }
・テストデータ編集
作成されたテストデータメソッド、テストメソッドにはアサーション情報が定義されていないため、テストケースごとに期待値となるデータを追加するための設定を行います。
- testCheckUserData() の編集
UtilParameterizedTest#testCheckUserData() の引数に期待値用の変数を追加します。
変更前 public void testCheckUserData( String getAddressResult, String getEmailResult, String getNameResult, String getPhoneResult, String getUserIdResult) throws Throwable { ▼ 変更後 public void testCheckUserData( String getAddressResult, String getEmailResult, String getNameResult, String getPhoneResult, String getUserIdResult, boolean expected // Boolean 型の引数を追加 ) throws Throwable {
変更後のファイルを保存し、プロジェクトのビルドが正常に行われることを確認します。
testCheckUserData_Parameters () の編集
テストデータを変更します。変更前 (改行済み) return new Object[][] { { "", "", " ", null, "01234567890…" } }; ▼ 変更後 return new Object[][] { { "", "", " ", null, "01234567890…", false}, // boolean型の引数を追加 {"address", "email", "name", "phone", "userId", true} // 新規テストケースを追加 };
・テスト実行と結果確認
作成したテストメソッドを実行します。
ソースコードペインでUtilParameterizedTest#testCheckUserData メソッドを選択し、単体テストアシスタントビューで を押下します。
実行後、JUnit ビューで 2 テストケースが実行されていることを確認します。
単体テストアシスタントビューと変数ビューを使って、実行したテストケースと入力されたテストデータが正しく渡されていることを確認します。
単体テストアシスタントビューで任意のテストケースを展開し、UtilParameterizedTest.testCheckUserData (String,String,String,String,String,boolean) を選択すると
変数タブにテストデータメソッドから取得したテストデータの値が表示されます。
更にテストケースの実行フローを展開するとモックに置き換わった User クラスの各メソッドが呼び出されたときに戻されるデータを確認することができます。