...
作成された testGetItemDB() を確認します。(テストメソッド名は連番で付けられるため本チュートリアルの実施順によって異なります。)
@Test | |
public void testGetItemDB() throws Exception { | テストメソッド |
// Given | |
Cart underTest = new Cart(); | テストインスタンスの生成 |
// When | |
Connection con = mockConnection(); | getItemDBメソッドのConnection引数のモックオブジェクト呼び出し |
String itemId = ""; // UTA: デフォルト値 | getItemDBメソッドのString引数 |
Item result = underTest.getItemDB(con, itemId); | getItemDB メソッドの呼び出し |
// Then | getItemDB の戻り値のチェック用アサーションテンプレート |
// assertNotNull(result); | |
} |
テンプレート作成時に getItemDB(Connection, String) メソッドの引数となるString オブジェクトにはデフォルト値 “” が格納されます。
同じく引数のConnection オブジェクトは同一テストクラス内に生成された Connection のモックを生成・設定するためのヘルパーメソッド mockConnection() の戻り値が格納されます。
...
作成された mockConnection() を確認します。(一部改行を入れています。)
private static Connection mockConnection() throws Throwable { | ヘルパーメソッド |
Connection con = mock(Connection.class); | Connection のモックオブジェクト生成 |
Statement createStatementResult = mockStatement(); | Statement のモックヘルパーメソッド呼び出し …① |
when(con.createStatement()). thenReturn(createStatementResult); | Connection#createStatement メソッドの戻り値を設定 …② |
return con; | Connectionを返却 |
} |
テスト対象の getItemDB(Concection, String) メソッドの内部で Connection オブジェクトは Connection#createStatement メソッドで Statement オブジェクトの生成をします。
mockConnection() ヘルパーメソッドではテストケースの実行時に Connection#createStatement メソッドの戻り値が任意の値を戻すためのコードが自動生成されます。(上記②)
なお、Connection#createStatement メソッドの戻り値となる Statement はテストケースの生成で同時に生成された mockStatement() メソッドでモック化されています。(上記①)
...
作成された mockStatement () を確認します。(一部改行を入れています。)
private static Statement mockStatement () | ヘルパーメソッド |
throws Throwable { | |
Statement createStatementResult = mock(Statement.class); | ResultSetのモックヘルパーメソッド呼び出し …① |
when(createStatementResult. | Statement# executeQueryメソッドの戻り値を設定 …② |
return createStatementResult; | Statementを返却 |
} |
テスト対象の getItemDB(Concection, String) メソッドの内部で Statement オブジェクトは Statement#executeQuery() メソッドで ResultSet オブジェクトの生成をします。
mockStatement() ヘルパーメソッドではテストケースの実行時に Statement#executeQuery() メソッドの戻り値が任意の値を戻すためのコードが自動生成されます。(上記②)
なお、Statement#executeQuery() メソッドの戻り値となる Statement はテストケースの生成で同時に生成された mockResultSet() メソッドでモック化されています。(上記①)
...
作成された mockResultSet() を確認します。(一部改行を入れています。)
private static ResultSet mockResultSet () throws Throwable { | ヘルパーメソッド |
ResultSet executeQueryResult = mock(ResultSet.class); | ResultSetのモックオブジェクト生成 |
int getIntResult = 0; // UTA: デフォルト値when(executeQueryResult.getInt(nullable(String.class))). thenReturn(getIntResult); | ResultSet#getIntメソッドの戻り値を設定 |
String getStringResult = ""; // UTA: デフォルト値 | ResultSet#getString メソッドの戻り値を設定 |
boolean nextResult = false; // UTA: デフォルト値 when(executeQueryResult.next()).thenReturn(nextResult); | ResultSet#next メソッドの戻り値を設定 |
return executeQueryResult; | ResultSetを返却 |
} |
∘ テストメソッドの変更
作成されたテストメソッドはテストの内容に合わせて変更する必要があります。
今回は、mockResultSet() で ResultSet#next メソッドの戻り値を変更します。
次のコードの false を true に変更します。
変更前 | 変更後 | |
boolean nextResult = false; | ► | boolean nextResult = true; |
変更後のファイルを保存し、プロジェクトのビルドが正常に行われることを確認します。
...
3.testGetItemDB() メソッドに以下のアサーションが追加されたことを確認します。
// Then - メソッド getItemDB(Connection, String) の結果 のアサーション assertNotNull(result); assertEquals("", result.getName()); assertEquals("", result.getId()); assertEquals(0, result.getPrice()); assertEquals(0, result.getCount()); |
4.変更後の testGetItemDB() メソッドを から実行します。
...