Это хороший подход, и он должен работать даже для пустых таблиц - если таблица пуста, у вас нет устаревших данных, о которых стоит беспокоиться, не так ли? Или, если вы хотите проверить ограничения Grails на совместимость с ограничениями БД, создайте новый экземпляр класса и попробуйте save()
передать его в транзакции - и всегда откатывать транзакцию обратно.
Если база данных небольшая, я бы даже пошел и удалил max:1
из list()
- чтобы проверить каждую запись, потому что только некоторые из записей могут нарушать ограничения.
Я бы также заменил println "${it}"
на assert it.validate()
.
Последняя оптимизация, я бы ограничил проверенные классы только теми, которые, как я знаю, могут нарушать некоторые ограничения. Это сэкономит значительную часть такого теста - и тест займет много времени, вы знаете - чтение всей базы данных с накладными расходами GORM.