Тестовые данные одного тестового примера отражаются в другом тестовом примере - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь использовать @sql и @sqlgroup в моем модульном тесте.У меня есть 2 тестовых случая, а именно testA и testB.Группа sql для testA:

    @SqlGroup({
        @Sql(value = "classpath:test/scripts/testA-service/before-test.sql",
                executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
        @Sql(value = "classpath:test/scripts/testA-service/before-testA.sql",
                executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
        @Sql(value = "classpath:test/scripts/testA-service/after-test.sql",
                executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
})

Группа sql для testB:

  @SqlGroup({
        @Sql(value = "classpath:test/scripts/testB-service/before-test.sql",
                executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
        @Sql(value = "classpath:test/scripts/testB-service/before-testB.sql",
                executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD),
        @Sql(value = "classpath:test/scripts/testB-service/after-testB.sql",
                executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD),
        @Sql(value = "classpath:test/scripts/testB-service/after-testB.sql",
                executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
})

В before-testA.sql я вставляю в таблицу с именем TABLE1 некоторые случайные значения.В after-test.sql testA-service я усекаю TABLE1.

В before-test.sql testB-service я отбрасываю TABLE1, если он существует, а затем создаю его снова.Я вставляю в TABLE1 еще несколько случайных значений.В post-test.sql службы testB я усекаю TABLE1.

Во время выполнения теста testB testB используемые в TABLE1 значения не являются введенными во второй раз.Вместо этого он использует значение, вставленное в первый раз.

Я использую HSQLdb.Эта проблема возникает не локально, а на сервере prod / dev.

1 Ответ

0 голосов
/ 03 марта 2019

Если это внутрипроцессный файл : база данных и два теста - это два отдельных процесса, убедитесь, что вы выполняете «SHUTDOWN» в конце AFTER_TEST первого теста.

При подключении к серверу HSQLDB hsql: или когда два теста находятся в одном и том же Java-процессе, а ваша база данных имеет вид mem: , "SHUTDOWN" НЕ должен выполняться.Во втором случае он потеряет все, что было сделано первым тестом.

...