行く記憶の流れは絶えずして

戻ってこないのでメモするところ

DropwizardのテストからLiquibaseを知る

 

DropwizardのDAOテスト用DBをどうしようかと悩んでいたらこれを知りました。

最初はmockitoを使ってやりきろうと思ったけど、SQLのクエリも見たいのと

ログイン周りでSessionを使っているのでこれを選択。

 

DBをバージョン管理できるすごいやつ。

 

今回はMySQLの既存のスキーマxmlにダンプして、h2 dabatase(in memory)に

再構築してテスト用DBを作ろうと頑張ってみました。

Dropwizardに食わせるDB設定は本番環境とテスト環境で設定ymlを分ければいいので楽です。

 

できたこと:

  1. xmlのテンプレートを作っておく(Step 1参照)

    Liquibase | Database Refactoring | Liquibase Quickstart<

    必要ないかもしれません

  1. 設定項目をliquibase.propertiesに記載

    Liquibase使い方(基本)メモ - Qiita
  2. ダンプ

    • java -jar [liquibase.jarのpath] --defaultsFile=[上記で作ったliquibase.properties] generateChangeLog
    • liquibase.jarとDBドライバはDropwizardのプロジェクトで使用(依存)しているものにリンクを張るとバージョンで悩まない
    • 上記だとログ作成時にymlパーサーが見つからないとINFOが出たが今回は無視
    • クラスパスをきっちり指定している人は大丈夫だと思う
  3. h2 databaseへの再構築(一部)、Dropwizardのテストでの使用

    上記で作成したxmlをdropwizard-migrationで使用

    Java - dropwizard-testingが便利でした - Qiita

できなかったこと:

  • ダンプしたxmlからの完全な再構築

    • VIEWのクエリでDATE_FORMAT()関数を使用していた部分、スキーマ指定していた部分
    • DATE_FORMAT()使用箇所はテストでクリティカルではないので削除、
    • スキーマ指定もここでは単一のスキーマなので削除
  • スキーマの指定(上記でも触れていますが、やりたいことができたので後回し)

 

目的は達成できたので満足です。

いずれバージョン管理にも手を出したいところ。