Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

Image Modified

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

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

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

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

    Code Block
    themeEclipse
    import static org.mockito.Mockito.doThrow;
    import static org.mockito.Matchers.anyString;
    import java.sql.SQLException;


  3. 以下に編集後のテストメソッドを以下に記載します。

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

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

    Image Modified