Кросспост з devua.co
В мене виникла проблема з H2 DB під час розробки фукнціональних тестів для аплікейшна, в якого MySQL (MariaDB) в проді – а H2 DB, відповідно, в функціональних тестах.
В H2 DB, як виявляється, немає більшості функцій для конверсії дат, наявних в MySQL – а саме мені забракло такої примітивної речі як UNIX_TIMESTAMP (яка в MySQL конвертує дати в, ясне діло, unix timestamp).
В результаті код то працює, але фукнціональний тест не написати, бо SQL запит, який чудово працюе сам по собі, в тестах валиться через відсутність UNIX_TIMESTAMP.
Фікс виявився дуже простим – в H2 DB в якості функції реєструється джавішний static метод через виклик CREATE ALIAS. Т.я. classpath в тестах спільний з classpath-ом H2 DB, працюючий код тесту виглядає приблизно так (JUnit4+Spring):
Читати далі