Тестирование

В этом разделе описаны вопросы тестирования в контексте модели и базы данных.

Предок для тестов Dbm_Test

Классы unittest-ов должны быть унаследованы от класса jandcode.core.dbm.test.Dbm_Test.

В тестовых методах доступны определенные инструменты, пример:

import jandcode.core.dbm.*
import jandcode.core.dbm.mdb.*
import jandcode.core.dbm.test.*
import org.junit.jupiter.api.*

class Dbm_Test_Example extends Dbm_Test {

    @Test
    public void test1() throws Exception {
        // Модель, в контексте которой выполняются тесты
        Model model = this.getModel()

        // Экземпляр класса jandcode.core.dbm.mdb.Mdb
        // Соединение с базой данных будет установлено автоматически
        // при вервом обращении к базе данных
        Mdb mdb = this.getMdb()  // в groovy-коде можно использовать mdb, вместо getMdb()

        // Экземпляр класса jandcode.core.dbm.test.DbmTestSvc
        // Набор утилитных методов для модели и базы данных
        DbmTestSvc dbm = this.dbm
    }

}

Без дополнительной настройки, в тестах будет использоватся модель default. Можно настроить конкретную модель дл использования в тестах. Для этого в файле test.cfx необходимо указать необходимую модель:

<root>

    <test>
        <!-- Определение модели по умолчанию в тестах.
        -->
        <dbm
                model-default="my.model.name"
        />
    </test>

</root>

Автосоздание базы данных для тестов

Система тестирования может создавать базу данных в момент первого обращения к ней. Настройка:

<root>

    <test>
        <!-- Определение модели по умолчанию в тестах и указание,
             что базу данных нужно создавать, если она не существует.
             Также в базе будет создана структура базы.
        -->
        <dbm
                model-default="default"
                create-db="true"
                create-db-struct="true"
        />
    </test>

</root>

Свойства:

  • create-db - если значение true и база не существует, то пустая база данных будет создана автоматически, при первом обращении к ней
  • create-db-struct - если значение true, то в базе данных будет выполнен скрипт, который создаст структуру базы данных по текущему состоянию модели.

Если параметры create-db и create-db-struct равны true, и база данных существует и в ней какая-то структура, например от последнего выполнения тестов, то выполняется сравнение теукщей структуры в модели и структуры в базе данных. Если они отличаются, база данных удаляется и создается заново, с актуальной структурой.