ここでは、getItemDB(Connection, String) メソッドの stmt.executeQuery(sql); 実行時に java.sql.SQLException を発生させるテストコードを作成します。
...
testGetItemDB() メソッドに以下の 2 行を追加します。
Code Block
...
doThrow(new SQLException("invalid SQL statement")) .when(createStatementResult).executeQuery(anyString());
追加する位置は getItemDB(Connection, String) の呼出し前にします。
.CartTest.java クラスの import 文に以下の 3 行を追加します。
Code Block
...
import static org.mockito.Mockito.doThrow; import static org.mockito.Matchers.anyString; import java.sql.SQLException;
以下に編集後のテストメソッドを以下に記載します。
Code Block
...
~省略~ import static org.mockito.Mockito.doThrow; import static org.mockito.Matchers.anyString; import java.sql.SQLException; ~省略~ import static org.mockito.Mockito.doThrow; import static org.mockito.Matchers.anyString; import java.sql.SQLException; ~省略~ @Test public void testGetItemDB3() throws Exception { // Given Cart underTest = new Cart(); Connection con = mock(Connection.class); Statement createStatementResult = mock(Statement.class); when(con.createStatement()).thenReturn(createStatementResult); doThrow(new SQLException("invalid SQL statement")) .when(createStatementResult).executeQuery(anyString()); String itemId = "001"; Item result = underTest.getItemDB(con, itemId); // Then // assertNotNull(result); } ~省略~ }
ソースコードを保存しプロジェクトのビルドが正常に行われることを確認後、単体テストアシスタントビューで をクリックしてテストを実行します。
カバレッジビューとソースコードペインに表示されるラインで例外処理が実行されていることを確認します。