grailsドメインクラスがデータベースと同期していることを検証するための最良の方法は何ですか?これはレガシーデータベースであり、ドメインクラスから構築することはできません。ここで興味深いアイデアは、各ドメインの1行をフェッチすることを意味します。ただし、主に、検証対象のテストデータベースは、すべてのテーブルにデータがあるほどデータが豊富ではない可能性があるため、完全なソリューションのようには感じられません。
読んだり返信したりするのに時間を割いてくれてありがとう。
grailsドメインクラスがデータベースと同期していることを検証するための最良の方法は何ですか?これはレガシーデータベースであり、ドメインクラスから構築することはできません。ここで興味深いアイデアは、各ドメインの1行をフェッチすることを意味します。ただし、主に、検証対象のテストデータベースは、すべてのテーブルにデータがあるほどデータが豊富ではない可能性があるため、完全なソリューションのようには感じられません。
読んだり返信したりするのに時間を割いてくれてありがとう。
これは優れたアプローチであり、空のテーブルでも機能する必要があります。テーブルが空の場合、検証について心配するレガシーデータはありません。または、Grails制約のDB制約との互換性をテストする場合は、クラスの新しいインスタンスを作成しsave()
てトランザクションで試行し、常にトランザクションをロールバックします。
データベースが小さい場合は、-から削除max:1
して、すべてlist()
のレコードを検証します。これは、一部のレコードのみが制約に違反している可能性があるためです。
私もに置き換えprintln "${it}"
ますassert it.validate()
。
最後の最適化として、テストするクラスを、いくつかの制約に違反する可能性があることがわかっているクラスのみに制限します。これにより、このようなテストのかなりの部分が節約されます。テストにはかなりの時間がかかります。GORMオーバーヘッドを使用してすべてのデータベースを読み取ることができます。