※業務関連の用語などをぼかして記述するため、一部あいまいになってしまいますが
ご了承ください。
###前提
現在Javaの開発で、将来のJavaバージョンアップに備え、SQL系のAPIをラップするクラスを作成しています。
アプリ→実装クラス→ラッパークラス
という流れを想定しており、アプリが実装クラスに対して呼び出し、実装クラスではラッパークラスでラップした
APIを必要に応じてオーバーライドする。
業務での製造ですので、一定のカバレッジを持つテストクラスが求められています。
###実現したいこと
実行したところのカバレッジ(今回は実装クラスに対して呼び出し、ラッパークラスのカバレッジを取得したいです。)
以下のような実装を呼び出せている(=カバレッジが見込める)テストを行いたいのですが、
どのようにテストクラスを作成すればよいのでしょうか。
実際にDBには接続せずに、呼び出せていることの確認を行いたいです。
※使用できるツール類は
・Eclipse
・Junit
・Mockito
・PowerMock
になっています。
###ソース
java
1実装クラス 2 3実装クラスのコンストラクタ(Connection con,Statement stmt){ 4 super(con,stmt); 5 this.con=con; 6 this.stmt=stmt; 7}
java
1ラッパークラス 2 3ラッパークラスのコンストラクタ(Connection con,Statement stmt){ 4 this.con=con; 5 this.stmt=stmt; 6} 7 8/** 9* 例(java.sql.Statement#executeQuery) 10*/ 11public ResultSet executeQuery(String sql)throws SQLException{ 12 return stmt.executeQuery(sql); 13} 14以下同様のAPIの実装が続く
以下のようなテストクラスを試したところ、問題なく実行され、Junitのバーはオールグリーンになるのですが、
ラッパークラスのカバレッジが取れず、プロジェクトのエビデンスとしては不十分でした。
java
1テストクラス 2 3@Mock 4private 実装クラス sqlstmt = mock(実装クラス.class) ; 5 6@Before 7public void setUp()throws Exception{ 8 MockitoAnnotations.initMocks(this); 9} 10 11/* 12* 13*その他Eclipseにて自動生成されるメソッドなど(中身なし) 14* 15/* 16 17 18@Test 19public ResultSet TestExecuteQuery(){ 20 try{ 21 sqlstmt.executeQuery(null); 22 }catch(SQLException e){ 23 fail("失敗"); 24 } 25} 26
申し訳ありませんが、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー