app тесты

Связи
  • jandcode.core.test.App_Test (class)
  • jandcode.core.test.AppTestSvc (class)

Описание

Для тестирования приложения и его объектов в unit-тестах имеется специальный механизм загрузки приложения.

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

Для тестирования объектов в контексте приложения, необходимо создать наследника от класса jandcode.core.test.App_Test. В поле экземпляра app (тип jandcode.core.test.AppTestSvc) хранится ссылка на экземпляр приложения, доступного из этого класса:

import jandcode.core.std.*;
import jandcode.core.test.*;
import org.junit.jupiter.api.*;

public class MyApp1_Test extends App_Test {

    @Test
    public void test1() throws Exception {
        // app - ссылка на приложение: jandcode.core.App
        DataDirService svc = app.bean(DataDirService.class);
        String p = svc.getPath("mypath");
        //...
    }

}

При запуске таких тестов загрузка приложения осуществляется из файла test.cfx, который ищется в пакете класса с тестом или выше по иерархии пакетов. Первый найденный файл test.cfx будет загружен так, как будто это файл app.cfx.

Таким образом в разных пакетах тестах можно тестировать различные конфигурации приложения.

Если необходимо загрузить основной app.cfx из test.cfx, то это можно сделать так:

<root>
    <x-include path="#{appdir}/app.cfx"/>
</root>

Если необходимо тестировать обособленный модуль, то в test.cfx нужно подключить необходимый модуль и не загружать app.cfx:

<root>
    <x-depends module="my-module1"/>
</root>

Все нужные параметры можно настроить непосредственно в test.cfx или вынести их во внешний файл, при необходимости. Например так:

<root>
    <!-- подключаем модуль -->
    <x-depends module="my-module1"/>

    <!-- настраиваем что-то по умолчанию -->
    <my-params a1="1"/>

    <!-- подключаем внешний _tests.cfx из каталога с приложением для перекрытия параметров-->
    <x-include path="#{appdir}/_tests.cfx" require="false"/>
</root>

AppTestSvc

Сервис для тестирования в контексте приложения.

Сохранение конфигурации

Конфигурацию загруженного приложения можно сохранить в файл для последующего анализа:

// записать в файл 'temp/ИМЯ_КЛАССА-ИМЯ_ПАКЕТА.cfx'
app.saveAppConf();

Проблемы при загрузке конфигурации

Загрузка конфгурации приложения делается в методе setUp. Если возникают проблемы, то можно включить логгирование setUp метода для анализа (см. Логгирование в setUp методе).