実現したいこと
- 以下のDAOファイルで取得されるデータの中身が想定通りにとれているか評価するテストコードを書きたい。
- 1件の詳細情報取得部分は、DTOに詰めて1項目ずつ
assertEquals
を使用して書くなどでできているのですが、複数件の場合がよく理解できていません。
- 1件の詳細情報取得部分は、DTOに詰めて1項目ずつ
public ArrayList<Goods> selectGoodsList() throws SQLException { PreparedStatement stmt = null; ResultSet rs = null; ArrayList<Goods> goodsList = new ArrayList<Goods>(); try { String sql = "SELECT * from goods"; stmt = con.prepareStatement(sql); System.out.println(sql); rs = stmt.executeQuery(); if (rs.next()) { Goods goods = new Goods(); goods.setGoodsId(rs.getString("goods_cd")); goods.setGoodsName(rs.getString("goods_name")); goods.setDescription(rs.getString("goods_notes")); goods.setPrice(rs.getInt("goods_price")); goods.setGenre(rs.getString("goods_class")); goods.setImage(rs.getString("goods_picture_path")); goodsList.add(goods); } return goodsList; } catch (SQLException e) { throw e; } finally { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } // 例外に対しては何も処理を行わない } catch (SQLException e) { } } }
事象
Testクラスでは、以下のようにしてみている(成功している1件の場合の詳細情報取得部分)
返却はGoodsクラスのDTOです。
※仮で商品名のみにしている。(ここもオブジェクト毎比較できるやり方があればご教示いただきたいです。)
assertThat(比較元, hasItems(比較したいもの))
とかで行けるかと思いましたが、
型 MatcherAssert のメソッド assertThat(T, Matcher<? super T>) は引数 (Goods, Matcher<Iterable<Goods>>) に適用できません
となってしまったので、assertThat使うのに何かやり方があるのかな?とも疑問になってしまいました。
AssertThatのstaticインポートなども試してみましたが…
@Test public void 商品詳細情報取得のテスト() throws SQLException { Goods goods = dao.selectGoods("0000000001"); // 引数は商品コード assertEquals("商品名", goods.getGoodsName()); assertThat(goods1, hasItems(goods)); }
取得できる想定データは以下の通り
goods.setGoodsId("0000000001"); goods.setGoodsName("商品名"); goods.setPrice(5000); goods.setGenre("ジャンル"); goods.setDescription("商品説明"); goods.setImage("image.gif");
発生している問題・エラーメッセージ
リストの中身が3件程度とかであれば想定値の値を
ArrayList<Goods> goodsList = new ArrayList<>(); Goods goods1 = new Goods(); ・・・ Goods goods2 = new Goods(); ・・・ Goods goods3 = new Goods(); ・・・ goodsList.dd(goods1) ・・・
の形で作れるのですが、もっと増えたときに想定の値を楽に用意する方法などありますでしょうか?
補足情報(FW/ツールのバージョンなど)
Java11
Tomcat9
Junit4
また、
Junit4とJunit5で書き方が結構変わるものでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。