2014-12-05 1 views
0

Я новичок в maven. Я запускаю тест из командной строки. Эти тесты создают базу данных. Мои проблемы заключаются в том, что после завершения теста данные удаляются. Я хочу, чтобы сгенерированная база данных использовала ее позже. Есть ли способ сделать это в maven? Это то, что я бегу через командную строку:Предотвращение удаления данных после выполнения теста с maven

 mvn -Dtest=TestDynamicLayers test 

Я видел, что есть аналогичный вопрос здесь, но это не решает мою проблему: Prevent data from being deleted after test run with Hibernate/Spring/Maven/MySQL

Благодаря Димитрис

ответ

1

Я бы не Не ожидайте, что удаление данных из тестов будет поведением Maven, это то, что обычно происходит на шаге «отрыв» в тесте или как поток, на который вы ссылаетесь, предлагает автоматическое откат для тестов @Transactional.

Предполагая, что тестовые прогоны, в вашем примере TestDynamicLayers.java является единственным тестом, который выполняется, поэтому удаление данных будет чем-то одним из методов тестирования или одним из шагов «после». например если использовать аннотации JUnit, то отключение будет ожидаться в методе, аннотированном @AfterTest.

Как правило, я бы посоветовал не использовать тест, который обычно запускается на этапе тестирования сборки Maven, чтобы иметь побочные эффекты, поскольку это означает, что несколько тестовых исполнений могут иметь разные результаты. По этой причине желательно исключить тестовые данные после выполнения теста. Лично я бы пошел дальше и использовал базу данных в памяти для модульных тестов.

Предлагаю вам извлечь код создания данных для данных, которые вы хотите сохранить, и выполнить это за пределами теста, обернув его методом main(). Если вы хотите, чтобы данные также были созданы с помощью тестов, вы можете вызвать тот же код, сохранить в настоящее время нежелательное удаление данных и напрямую вызвать создание данных с помощью java -classpath

Смежные вопросы