例外発生コード追加

ここでは、getItemDB(Connection, String) メソッドの stmt.executeQuery(sql); 実行時に java.sql.SQLException を発生させるテストコードを作成します。



  1. testGetItemDB() メソッドに以下の 2 行を追加します。

    doThrow(new SQLException("invalid SQL statement"))
    .when(createStatementResult).executeQuery(anyString());

    追加する位置は getItemDB(Connection, String) の呼出し前にします。

  2. .CartTest.java クラスの import 文に以下の 3 行を追加します。

    import static org.mockito.Mockito.doThrow;
    import static org.mockito.Matchers.anyString;
    import java.sql.SQLException;
  3. 以下に編集後のテストメソッドを以下に記載します。

    ~省略~
    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);
     }
    ~省略~
    }
  4. ソースコードを保存しプロジェクトのビルドが正常に行われることを確認後、単体テストアシスタントビューで をクリックしてテストを実行します。

  5. カバレッジビューとソースコードペインに表示されるラインで例外処理が実行されていることを確認します。