...
作成されたテストメソッドテンプレートの内容を確認します。
Code Block theme Eclipse @Test public void testGetItemDB() throws Exception { // テストメソッド // Given Cart underTest = new Cart(); // テストインスタンスの生成 // When // getItemDB メソッドの引数 Connection con = null; // UTA: デフォルト値 String itemId = ""; // UTA: デフォルト値 Item result = underTest.getItemDB(con, itemId); // getItemDB メソッドの呼び出し // Then // assertNotNull(result); // getItemDB の戻り値のチェック用アサーションテンプレート }
テンプレート作成時に getItemDB(Connection, String) メソッドの引数となるConnection オブジェクトと String オブジェクトにはそれぞれのデフォルト値が格納されます。
Connection オブジェクトのデフォルト値には null が格納されるため、getItemDB(Connection, String) メソッドで Connection オブジェクトにアクセスすると、 java.lang.NullPointerException が発生します。
Connection オブジェクトのモックを作成し getItemDB(Connection, String) にはモックオブジェクトが渡されるようにコードを変更します。(モックの作成は『モックの作成は次の『任意のオブジェクトをモック化』で行います。)getItemDB(Connection, String) メソッドの String 引数を入力します。
次のコードの “” を “001” に変更します。
Code Block theme Eclipse 変更前 変更後 String itemId = ""; ⇒ String itemId = "001";
変更後のファイルを保存し、プロジェクトのビルドが正常に行われることを確認します。
...
- testGetItemDB() メソッドの Connection オブジェクトをダブルクリックで活性化し、単体アシスタントビューの をクリックします。
Connection オブジェクトが活性化されていない場合メニューに が表示されません。メニューが表示されていない場合は、ソースコード上で活性化されている内容を確認してください。
Connection オブジェクトが以下のようにモックオブジェクトに変更されたことを確認します。
Code Block theme Eclipse 変更前 変更後 Connection con = null; ⇒ Connection con = mock(Connection.class);
- 変更後の testGetItemDB() メソッドを から実行します。
- 実行結果を確認します。
● JUnitビュー実行時に java.lang.NullPointerException が発生したことにより、テストがエラーとなったことがわかります。
● 推奨事項ビュー“例外/アサーション エラー” の情報が出力されていることを確認します。
推奨事項内の をクリックし、単体テストアシスタントビューの実行フローで例外が発生したコードがハイライトされることを確認します。
ハイライトされた内容を確認すると getItemDB(Connection, String) メソッドで以下のコードの実行時に例外が発生したことがわかります。
そのため、Statement オブジェクトをモックオブジェクトに変更します。
...
- プロジェクトのビルドが正常に行われることを確認し、単体テストアシスタントビューの
- 実行後、単体テストアシスタントビューの ”実行フロー“ にはモックオブジェクトの作成とモックオブジェクトを利用している個所が表示されます。
testGetItemDB() メソッドに以下のアサーションが追加されたことを確認します。
Code Block theme Eclipse // Then - メソッド getItemDB(Connection, String) の結果 のアサーション assertNotNull(result);assertEquals("商品A", result.getName());assertEquals("001", result.getId()); assertEquals(100, result.getPrice()); assertEquals(10, result.getCount());
- 変更後の testGetItemDB() メソッドを から実行します。
- 実行後、カバレッジビューで getItemDB(Connection, String) の実行行を確認します。
カバレッジビュー上は getItemDB(Connection, String) メソッドの 92 % が実行されていることがわかります。
ソースコードペインの横に表示される赤と緑のライン情報から java.sql.SQLException が発生するパターンのテストが不足していることがわかります。「例外を発生させるテスト例外を発生させるテストの実施」でテストの実行時に例外を発生させるテストを作成します。
...