Spring boot - h2 DB проверяет выполнение скрипта более одного раза - PullRequest
0 голосов
/ 03 сентября 2018

Я выполняю некоторые тесты JUnit, и мне нужно выполнить сценарий SQL только один раз, но кажется, что он выполняется один раз за тест.

Я использую следующие аннотации:

-Главный:

@SpringBootApplication
@EnableTransactionManagement

-Тест класса:

@Sql({ "classpath:insertMessage.sql" })
@Transactional
public class ServiceTest {

Чего мне не хватает?

1 Ответ

0 голосов
/ 03 сентября 2018

Если вы хотите повлиять только на один тест с помощью сценария, просто добавьте метод.

Например

@Sql({ "classpath:insertMessage.sql" })
@Test
public void myExtremlyBadTestMethodNamingConventionTest() {

Если вы хотите выполнить заданный тест перед всеми вашими тестами для одного класса тестирования. Вот где это становится сложно -

Прежде всего, вы можете подумать о добавлении @SQL в @BeforeClass, но это невозможно, поскольку @SQL не поддерживает @BeforeClass (или @Before).

Далее вы можете обнаружить аннотацию @Commit, что означает, что вы можете зафиксировать все изменения, сделанные с помощью теста. (@Transaction по умолчанию поведение откатить все изменения после теста) Теперь вы можете рассмотрим @Commit одиночный фиктивный тест для выполнения перед всеми вашими другие тесты?

НЕТ Пожалуйста, не спускайтесь по этому маршруту.

JUnit не гарантирует порядок исполнения тесты. (Это сделано специально) Потому что ваши тесты не должны полагаться на результат других тестов.

Они должны быть независимы друг от друга. Зачем? Одним из преимуществ является то, Затем тесты могут выполняться параллельно. Но вы также никогда бы не хочу новый тест, чтобы сломать захватывающие тесты, это просто обслуживание кошмар, ожидающий случиться. (#Truestory)


Дополнительно . В случае, если вы хотите выполнить указанный сценарий перед всем тестом, вы можете добавить файл import.sql к ресурсам вашего теста. Spring Boot автоматически проверит его перед вашими тестами и выполнит для вас. Другими словами, он настроит вашу базу данных в определенное состояние для всех ваших тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...