" />

スポンサーリンク

開発

Java/SpringでDBにテストデータを投入する

投稿日:

なぜ、テストデータを投入するのか?

テストデータが整備されている開発案件に一度だけ会ったことがあります。入ったばかりの私でも、全画面を初日に動かすことができて、とても快適でした。

もしテストデータがなければ、画面遷移を確認するためには、テストデータを作るところから始めなければいけません。テーブル数が多く、外部キーがびっちり張り巡らされていたら、テストデータを作るだけで1日が終わってしまうでしょう。

テストデータを配布することで、開発時の画面間の疎通確認もやりやすく、結合テスト前からバグを潰すことができます。何よりテストデータ作成工数がなくなるのは大きいでしょう。

テストデータが整備されていないとしても、いずれにせよマスタ系のデータは配る必要がありますよね。ついでに簡単なテストデータを配布して、開発メンバの開発体験を向上させましょう。

テストデータを投入する方法

テストデータを投入する方法はたくさんあります。それは、INSERT文をどのように実行するか?と言う話になります。

1.INSERT文を書いたSQLを配る。

原始的ですが、これでも全然OKだと思います。テストデータが用意されているだけでありがたいですので。

メリットはSQLをソースコードとは別管理することで、ソースコードへの影響が一切ないことです。。

デメリットといえば、手動でファイルの中身をコピー&SQLクライアントにペースト&実行するのがややめんどくさいだけでしょうか。(A5-SQLなんかはSQLファイルを開けるし、ファイルから実行できるので、特に問題ないですね。)

2.flywayMigrateでINSERT文を実行する。

flywayでDBマイグレーションを行っている場合、flywayの仕組みに乗っかることができます。

INSERT文を書いた、V1__insert_data.sqlのようなSQLファイルを作り、flywayMigrateを実行するだけです。

メリットとしては、flywayの仕組みが使えるので、新たな設定や技術習得が不要です。

デメリットとしては、本番環境ではテストデータは不要なので、データ削除用SQLファイルを別途用意するか、手で削除する必要があるということでしょうか。(そこまで工数がかからないですが)

3.APIのロジックの中で入れる

JPAを使っている場合はこの方はやりやすいです。テストデータ投入用のAPIを用意して、ブラウザから叩いてもらうようにします。

デメリットはごみAPIが発生してしまうことでしょう。また、INSERT文直接書くに比べて、Entityをnewしたり値をセットするのはコード行数が以外とかさみます。

メリットはロジックで自由にデータを作成できることです。ループ回数を指定したり、ランダムな名前や数値も作りやすいでしょう。

スポンサーリンク

-開発

Copyright© ノリックジオグラフィック for Webエンジニア , 2022 All Rights Reserved Powered by AFFINGER5.