【新人日記8】DAOクラスのユニットテスト作成について
DAOクラスのユニットテスト作成
みなさんこんばんは!!
本日はyoutuberのスカイピースが解散のドッキリのような動画を出されていて
完全に騙されました(笑)
しかし、一緒に何かを成し遂げる友人や仲間っていいものだなと
とても感じました。
さて、本日はDAOクラスを上司に教えていただいたので
備忘録に残していきたいなと思っています。
DAOクラスを作成する手順は以下の通りです。
- データベースの代わりとなるCSVを自ら作成する
- テストデータ作成
1.データベースとの代わりとなるCSVの作成
他のクラスを作成する際にはMockという
対象のクラスが呼び出しているクラスとの関係を断ち切り、
自ら値を設定するものを利用していました。
しかし、DAOクラスでは呼び出すクラスがSQLしかないので
データベースの値を自ら作成するそうです。
私は恥ずかしながらCSVが何かわからなかったので備忘録として…
CSVとは
拡張子「.csv」のCSVファイルは互換性が高く、Excelのみならずメモ帳、メールソフト、
データベースソフトなどほとんどのソフトに取り込んで閲覧、編集することが可能です。
出典:いまさら聞けないIT用語:CSVファイルとEXCELファイルって何が違うの?
URL:https://data.wingarc.com/csv-excel-2-19747
CSVファイルでのデータ作成法
CSVでのデータ作成の方法としては以下の通りです
"カラム名1","カラム名2","カラム名3","カラム名4"
"カラム名1のデータ","カラム名4のデータ","カラム名4のデータ","カラム名4のデータ",
といったように作成します。
もちろんデータがintegerだとダブルクォーテーションは必要ありません。
このようにしてCSVファイルを作成していきます。
そして、テストデータファイルの中でselectByIdを使用する際なら、
それで使用するテーブル名を記載したファイルを作成しておきます。
テストの作成
テストの作成に移ります。
テストの作成はまず、使用するDAOを@Autowiredします。
そこから@testを付け、
クラスを定義し、テストベースのクラスを継承します
(プロフェクトによって違いあり)
そこから、SQLを実行し、その戻り値を受け取るような記述をします。
例:Entity res = dao.selectById(引数);
assertThat(res.検証したい値).isEquals(予想できる値);
で検証を行います
データ件数が複数の場合はList形式で処理結果を受け取る形に変更をします。
リスト形式の場合の検証方法は.containを使用します。
assert(list).contain("1","3","2")
これについてはすべて含まれている必要がなく、
並び順も検証判断基準には含まれないそうです。
このようにして、DAOのユニットテストを作成します
私の現状
私はこれに習ってテストを作成していますが、CSVの呼び出しがうまくいっていません
そのため、明日は上司に泣きつこうと思っています(笑)
本日は以上となります。少しでも誰かの役に立てればと思っていますので
よければ今後も見てやってください。
それではおやすみなさい(。-∀-)