Как упоминалось в @hotzst, встроенная база данных, например h2 или hsqldb, была бы очень полезной.
Но если вам действительно нужно, вы можете использовать https://github.com/rhuss/docker-maven-plugin для запуска любой части программного обеспечения в процессе сборки maven.
Единственным предварительным условием будет работающий докер или установка докерной машины на вашем компьютере.
Я использую следующий фрагмент кода, чтобы начать MongoDB при выполнении интеграционного теста
<plugin>
<groupId>org.jolokia</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.13.7</version>
<configuration>
<logDate>default</logDate>
<autoPull>true</autoPull>
<images>
<image>
<alias>mysql</alias>
<name>mysql:5.7.10</name>
<run>
<ports>
<port>3306:3306</port>
</ports>
<log>
<prefix>Mongo</prefix>
<color>yellow</color>
</log>
</run>
</image>
</images>
</configuration>
<executions>
<execution>
<id>start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>build</goal>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
вы можете начать все интеграционные тесты и согласно фазы Maven с mvn:verify
. При первом запуске этого плагина может потребоваться некоторое время.
Я могу представить, что есть причины использовать MySQL во время тестов интеграции, но что это такое? Потому что мой первый вопрос - почему бы не использовать базу данных в памяти. – hotzst
Хорошо и что использовать базу данных inmemory? Это хороший момент, но в случае разных db у меня есть другой sql-диалект. Это первое. Второй вопрос заключается не в запуске всей MySql, а в литх-версии, которая может быть (в хорошем случае) inmemory, конечно, но поддерживать все (или наиболее используемые) функции MySql. (по особенностям я в основном подразумеваю синтаксис sql, не все функции сервера db) – Cherry