プログラマー初心者blog

当ブログにようこそ!!!

【新人日記8】DAOクラスのユニットテスト作成について

DAOクラスのユニットテスト作成

みなさんこんばんは!!

本日はyoutuberのスカイピースが解散のドッキリのような動画を出されていて

完全に騙されました(笑)

しかし、一緒に何かを成し遂げる友人や仲間っていいものだなと

とても感じました。

さて、本日はDAOクラスを上司に教えていただいたので

備忘録に残していきたいなと思っています。

DAOクラスを作成する手順は以下の通りです。

  1. データベースの代わりとなるCSVを自ら作成する
  2. テストデータ作成
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の呼び出しがうまくいっていません

そのため、明日は上司に泣きつこうと思っています(笑)

本日は以上となります。少しでも誰かの役に立てればと思っていますので

よければ今後も見てやってください。

それではおやすみなさい(。-∀-)